admin

如果右表匹配,则排除记录

sql

我有两个表:

A

+--+----+
|id|name|
+--+----+
|0 |foo |
|1 |bar |
|2 |baz |
+-------+

B

+--+----+
|A |cond|
+--+----+
|0 |X   |
|1 |Y   |
+-------+

其中BA列是A.id值。

当B.cond =’X’时,我想从 A 中选择 B 表中没有匹配项的所有行。

因此,结果应为:

  • 酒吧
  • 巴兹

如何使用join(或类似的性能方法)编写此SQL请求?


阅读 128

收藏
2021-06-07

共1个答案

admin

SELECT
A.*
FROM
A
LEFT JOIN
B
ON A.id = B.A
AND B.cond = ‘X’
WHERE
B.A IS NULL

该查询根据您指定的条件联接表,然后仅选择table中不匹配的行B

2021-06-07