如何从A表中选择B表中不存在的值?

时间:2018-12-15 15:52:48

标签: mysql sql

我在mySQL DB中有2个表:A和B。

a,b,c列。

表A:

 a(1) = 1 
 a(2) = 2
 a(3) = 3

表B:

 a(1) = 1 
 a(2) = 2

因此,我们可以看到B表中没有带有a = 3的行。我如何请求DB来找到它?

所以响应(一行)可能看起来像:

a(1) = 3 
b(1) =..
c(1) =.. 

2 个答案:

答案 0 :(得分:5)

一个选项使用EXISTS

SELECT a.a
FROM TableA a
WHERE NOT EXISTS (SELECT 1 FROM TableB b WHERE b.a = a.a);

另一种选择是进行反联接:

SELECT a.a
FROM TableA a
LEFT JOIN TableB b
    ON a.a = b.a
WHERE b.a IS NULL;

答案 1 :(得分:2)

您还可以放弃联接并使用WHERE和嵌套的SELECT: 假设TabA在ValA列的后续行中保存的值为1,2,3 和TabB在ValB列的后续行中保存值为1,2 并且只需要TabA中包含值为3的行 您可以在没有加入的情况下执行此操作:

SELECT  Val_A
FROM TabA  
WHERE Val_A NOT IN (SELECT Val_B FROM TabB)