1

クラスに参加しているユーザーを一覧表示するテーブルがあります。この表の下<select>に、クラスに参加していないユーザーのリストを含むフィールドが必要です。

クラスに参加しているユーザーを一覧表示するクエリ:

SELECT * FROM User
 left join UserCourse on User.id = UserCourse.fkStudentId
 where UserCourse.fkCourseId = 1 and u.fkRoleId = 3;

そして、これが私のコードです。ここで、「例外」をリストしようとしています。

SELECT * FROM User where id != 
(SELECT id FROM User
 left join UserCourse on User.id = UserCourse.fkStudentId
 where UserCourse.fkCourseId = 1 and u.fkRoleId = 3);

問題は、2番目のクエリに一致する行がいくつかあり、それが許可されていないことです。出席しない生徒をリストする方法について何か提案はありますか?

4

1 に答える 1

5

に置き換え!=ますNOT IN

SELECT * FROM User where id NOT IN
(SELECT id FROM User
 left join UserCourse on User.id = UserCourse.fkStudentId
 where UserCourse.fkCourseId = 1 and u.fkRoleId = 3);
于 2013-02-24T20:37:41.290 に答える