10

テーブル B に存在しないものをテーブル A から選択する MySQL の SELECT ステートメントを作成しようとしています。例:

表 A:

+------+
| BAND |
+------+
| 1    |
| 2    |
| 3    |
| 4    |
| 5    |
+------+

表 B:

+------+
| HATE |
+------+
| 1    |
| 5    |
+------+

したがって、テーブル A がすべてのバンドで、テーブル B が嫌いなバンドである場合、嫌いではないバンドのみが必要です。したがって、選択の結果は次のようになります。

+------+
| BAND |
+------+
| 2    |
| 3    |
| 4    |
+------+

これに対して単一の選択をどのように記述しますか? これが私の最後の試みでした:

SELECT * FROM A LEFT JOIN B ON A.BAND = B.HATE WHERE B.HATE IS NULL;

編集:上記の行は修正されました!以下のコメントを参照してください...「= NULL」対「IS NULL」。

4

4 に答える 4

25

私は結合を使用します

select A.*
from A left join B on A.BAND = B.HATE
where B.HATE IS NULL;

注意: テーブルに適切なインデックスを作成してください

于 2013-04-08T22:54:16.463 に答える
8

を使用できますINが、非常に非効率的です。

SELECT * FROM tableA WHERE id NOT IN (SELECT id FROM tableB)
于 2013-04-08T22:47:44.813 に答える
1
SELECT * FROM tableA WHERE id NOT EXISTS (SELECT DISTINCT id FROM tableB)

また

SELECT * FROM tableA WHERE id NOT EXISTS (SELECT id FROM tableB GROUP BY id)
于 2014-02-14T15:47:00.160 に答える