想象一下三个数据表A,B和C.A和B共享一个公共变量ID1。 B和C共享公共变量ID2。编写一个伪查询来获得此结果:从表B中选择所有内容,在表A和表B中都匹配记录,但不在表C中。
我的答案版本如下(但我不确定它是否正确):
Select *
From table_b
Left Join table_a
On table_b.ID1 = table_a.ID1
Where table_b.ID2 NOT IN table_c.ID2
我对Where条件是否适用于给定条件持怀疑态度?请对我的回答发表意见。谢谢!
答案 0 :(得分:1)
Select *
From table_b
Left Join table_a On table_b.ID1 = table_a.ID1
Where not exists (select * from table_c where table_c.ID2 = table_b.ID2)
答案 1 :(得分:0)
与IngoB的解决方案类似,但稍微更具可读性(恕我直言)
SELECT *
FROM table_b
LEFT OUTER JOIN table_a USING (id1)
WHERE id2 NOT IN (SELECT id2 FROM table_c)