使用组合键查找具有特定值的记录

问题描述 投票:0回答:1

我有点困惑。它看起来很简单,我确信这个问题之前已经解决并发布了。然而,经过几个小时的搜索,我仍然没有找到这个小问题的解决方案:

t1.ENTRY 是复合键的第一部分 t1.COPY 是复合密钥的第二部分

SELECT t1.ENTRY, t1.COPY, t1.TTYPE, t2.ENTRY FROM SymbolText t1

    INNER JOIN Symboldata t2 ON t1.ENTRY =t2.LPNTR

WHERE t1.ENTRY = 'LS-85601366-E515-4B3D-BE10-4D8C01F0E08F'

这是我从上面的查询中得到的:

进入 复制 T类型 进入
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 1 18 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 2 14 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 3 18 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 4 14 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 5 18 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 6 14 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 7 18 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 8 15 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 9 528 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 10 5 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 11 527 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 12 522 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 13 534 CIM08-50-10
LS-85601366-E515-4B3D-BE10-4D8C01F0E08F 14 523 CIM08-50-10

我想获取所有记录的 t2.ENTRY

t1.ENTRY = 'LS-85601366-E515-4B3D-BE10-4D8C01F0E08F' and
t1.TTYPE = '528' and
t1.TTYPE = '5'

我真正想要的是这样的:

进入
CIM08-50-10

但是如果我像这样运行查询:

SELECT t2.ENTRY FROM SymbolText t1
        
    INNER JOIN Symboldata t2 ON t1.ENTRY =t2.LPNTR
        
WHERE t1.ENTRY = 'LS-85601366-E515-4B3D-BE10-4D8C01F0E08F' AND (t1.TTYPE = '5' AND t1.TTYPE = '528')

我不会得到任何结果,因为显然没有这样的记录同时具有 TTYPE = '5' 和 TTYPE '528'。我只需要根据两个键的组合返回一条记录。

我缺少什么提示吗?

sql select composite-key
1个回答
0
投票

我希望这对你有帮助:

SELECT t1.ENTRY, t1.COPY, t1.TTYPE, t2.ENTRY FROM SymbolText t1

    INNER JOIN Symboldata t2 ON t1.ENTRY =t2.LPNTR

WHERE t1.ENTRY = 'LS-85601366-E515-4B3D-BE10-4D8C01F0E08F' AND 
                  (t1.TTYPE = '5' OR t1.TTYPE = '528')

我在您的查询中将 AND 替换为 OR

附注如果 TTYPE 是数字,则应指定不带引号:

(t1.TTYPE = 5 OR t1.TTYPE = 528)

© www.soinside.com 2019 - 2024. All rights reserved.