我在mysql数据库中有两个表: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) =..
mrzz3bfm1#
一个选项使用 EXISTS :
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;
epfja78i2#
您也可以放弃联接并使用where和nested 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)
2条答案
按热度按时间mrzz3bfm1#
一个选项使用
EXISTS
:另一种选择是执行反连接:
epfja78i2#
您也可以放弃联接并使用where和nested select:假设taba在vala列的后续行中保留值1,2,3,而tabb在valb列的后续行中保留值1,2,并且您只希望taba中包含值3的行您可以不使用联接来执行此操作: