【问题标题】:How to choose values from A table which are absent in B table?如何从 A 表中选择 B 表中不存在的值?
【发布时间】: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 sql


【解决方案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)

【讨论】:

  • 非常好,感谢您的支持!
【解决方案2】:

一个选项使用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;

【讨论】:

  • @vppy 如果可以使用绿色复选标记,那就太好了^ ^
  • 是的,当然。只需等待 7 分钟即可标记。
猜你喜欢
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2011-06-07
  • 1970-01-01
  • 2011-06-25
相关资源
最近更新 更多