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/