我有一个数据结构,其中学生和组之间存在多对多的关系。我有三个表格:
我进行了一些搜索并尝试使用子查询,但只得到了一个空集...
如何仅选择不在特定组中(例如group.id = 1)的学生?学生:id、姓名
组:id、名称
学生_组:学生id、组id
我进行了一些搜索并尝试使用子查询,但只得到了一个空集...
select * from students where not exists (select students.* from students left join students_groups on students_groups.student_id = student.id where students_groups.group_id = 1);
我应该怎样查询?非常感谢提前帮助!
编辑 好了,看起来以下两种方式终于有效了... 有人可以解释一下为什么我不需要连接表就能使其工作吗?
select * from students where not exists (select * from students_groups where students_groups.student_id = student.id and student_groups.group_id = 1);
select * from students where id not in (select student_id from students_groups where group_id = 1);
NOT EXISTS
查询的where子句中加入该约束条件。 - Bort