0

我需要在 tab_b.id_tab_a 字段中的 tab_b 中找到哪些行(tab_a.id_taba)不存在

我有两张桌子。tab_a, tab_b

tab_a 字段: id_taba(2,3,4,5), name, name2

tab_b 字段 id_tabb(0,1,2,3,4,5,6,7,8), id_tab_a(0,1,2,3), field1, field2,

当我搜索

SELECT * FROM tab_a WHERE id_taba NOT IN (SELECT id_tab_a FROM tab_b)

它不起作用,但如果在同一个语句中我将语句交换为:

SELECT * FROM tab_b WHERE id_tab_a NOT IN (SELECT id_taba FROM tab_a)

它显示 2 行:“0”、“1”

我正在尝试获取 tab_a.id_taba 中的哪些行在 tab_b.id_tab_a 中没有

请给我一个提示和解释,为什么它不起作用。

4

1 回答 1

1

使用完全外连接,您可以找到查看任一表中不存在于另一个表中的记录的方法。

SELECT A.id_taba A, B.id_tab_a B
FROM tab_a A
FULL OUTER JOIN tab_b
 on A.id_taba = B.id_tab_a
WHERE a.id_taba is null or B.B.id_tab_a is null

如果您删除 where 子句,您可以看到所有记录。但既然你似乎是在不匹配之后......使用空值!

CodingHorror对连接和视觉辅助有很好的解释!

于 2015-05-22T15:40:50.090 回答