0

2 つのテーブルを結合しようとしていますが、2 番目のテーブルには 1 対多の関係があります。いずれかの行に特定の値がある場合、行全体を省略できますか? もっと説明しましょう。

User table

id name email
1  bob  bob@test.com
2  foo  foo@test.com


Music table

id userId
1  1
1  2
2  1
3  1
2  2

ユーザーが音楽テーブル ID 2 と関係があるかどうかをユーザーに表示したくないとします。また、個別のユーザーを探しています。

このようなことを試しても、両方のユーザーが表示されます。

SELECT * FROM users u LEFT JOIN music m ON u.id = m.userId WHERE m.id <> 3

すべての行をチェックしたいのですが、ID が 3 の場合は表示されません。私は理にかなっていると思います。どうもありがとう。

4

1 に答える 1

1

次のようなサブクエリを使用してみてください。

SELECT * FROM users
WHERE id NOT IN (SELECT userId FROM music WHERE id=3)

このクエリは、ID が music.id 3 に関連付けられていない場合、すべてのユーザーを選択することを意味します。

于 2012-11-28T03:24:52.967 に答える