tblA

ID

tblB

id,id2

我想检查tbl B ID中是否存在tbl A ID,但不要看id2,
tblB中的id2列将具有tblA中存在的密钥。

SELECT id
FROM tblA as a
WHERE NOT EXISTS
(
SELECT * FROM tblB AS b
WHERE a.id = b.id
)


从逻辑上讲,这应该可以工作,但是由于某种原因,它还为我提供了tblB的id2列中存在的值,而这些值在tblA的id中不存在

样本数据

tblA

ID
1
2
3
4


tblB

tblb_ID   | ID2
3         | 34
4         | 38
12        | 93
43        | 54
54        | 4


预期结果

1,2,因为1和2在tblB中不存在。

我得到什么

仅1,因为ID2中存在4,这为什么呢?

最佳答案

如果我理解您的问题,应该非常简单。您只需要tblA.id与tblB.id不匹配的tblA中的行。 tblB.id2没关系。

 SELECT * FROM tblA WHERE id NOT IN (SELECT tblb_ID FROM tblB)


如前所述,您的原始查询应该可以工作。给定您的更新信息,这看起来像是正确的查询:

SELECT id
FROM tblA as a
WHERE NOT EXISTS
(
    SELECT * FROM tblB AS b
    WHERE a.id = b.tblb_ID
)

关于mysql - 如何处理重复的 key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53639364/

10-12 18:28