SQL查询根据多个条件从三个表中提取数据

时间:2017-06-17 21:45:17

标签: mysql sql mysql-workbench

想象一下三个数据表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条件是否适用于给定条件持怀疑态度?请对我的回答发表意见。谢谢!

2 个答案:

答案 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)