我需要在tab_b的字段tab_b.id_tab_a中找到哪些行(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_b.id_tab_a
中找到tab_a.id_taba中哪些行没有请给我一个提示和解释,为什么它不起作用。
答案 0 :(得分: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对连接和视觉辅助工具有很好的解释!