我正在尝试为MySQL编写一个SELECT语句,它从表A中选择表B中不存在的内容.例如:
表A:
+------+
| BAND |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+------+
Run Code Online (Sandbox Code Playgroud)
表B:
+------+
| HATE |
+------+
| 1 |
| 5 |
+------+
Run Code Online (Sandbox Code Playgroud)
因此,如果表A是所有乐队,而表B是我讨厌的乐队,那么我只想要我不讨厌的乐队.所以选择的结果应该是:
+------+
| BAND |
+------+
| 2 |
| 3 |
| 4 |
+------+
Run Code Online (Sandbox Code Playgroud)
我该如何为此写一个选择?这是我的最后一次尝试:
SELECT * FROM A LEFT JOIN B ON A.BAND = B.HATE WHERE B.HATE IS NULL;
Run Code Online (Sandbox Code Playgroud)
编辑:上面的行已经修复!请参阅下面的注释..."= NULL"与"IS NULL".
Bar*_*nka 20
我会使用加入
select A.*
from A left join B on A.BAND = B.HATE
where B.HATE IS NULL;
Run Code Online (Sandbox Code Playgroud)
请记住:为表创建适当的索引
你可以使用IN
,但效率极低:
SELECT * FROM tableA WHERE id NOT IN (SELECT id FROM tableB)
Run Code Online (Sandbox Code Playgroud)