【发布时间】:2019-05-16 14:44:02
【问题描述】:
我在 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) =..
【问题讨论】:
我在 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) =..
【问题讨论】:
您也可以放弃连接并使用 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)
【讨论】:
一个选项使用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;
【讨论】: