【发布时间】:2018-12-05 19:22:32
【问题描述】:
tblA
身份证
tblB
id, id2
我想检查 tbl A ID 是否存在于 tbl B 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,这是为什么呢?
【问题讨论】:
-
拜托,如果您可以添加一些示例数据和预期结果,这将有助于澄清您的问题。
-
您确定吗,您从查询中只得到
id: 1,请检查:db-fiddle.com/f/aY6kwu1VVnj6m6u6FmanzX/0。它给了我 ID1和2。也许您的样本集与您的解释不一致? -
我同意 D. Smania 的评论——即使它与我在函数中提供的解决方案相似,您的代码也应该可以工作。其他东西必须解释您的结果,因为您的 EXISTS 查询应该可以工作。
-
@Will Driver 的 ID 号为
22在您的查询结果中,因为表MoSpo_RaceEntry的列raceEntryDriverId上没有任何 ID 号22。 ID 号22仅出现在该表的raceEntryCarId列中,与汽车有关,与司机无关。 -
@我会发疯吗,大声笑,如果您检查:ID 号
22不在raceEntryDriverId列上,这就是它出现在您的查询中的原因。难道你不想要这个:我只想要所有不在raceEntryDriverId中的司机