3
A
回答
8
不存在应该给你最好的表现。有关更多详细信息,请参阅Left outer join vs NOT EXISTS。
SELECT s.StudentID
FROM student s
WHERE NOT EXISTS(SELECT NULL
FROM student_class sc
WHERE sc.StudentID = s.StudentID)
+0
查询优化器将为此反连接创建相同的计划,以便为具有左连接的计划创建该连接。 –
+1
@Jeremy:阅读我引用的文章。 –
+0
我对那篇文章提出了怀疑的眉毛。我敢打赌,你可以将这些数字倒转。 –
1
select * from student
left join student_class on student_class.studentid = student.studentid
where student_class.scid is null;
1
另一种方法是使用一个左连接:
SELECT s.student_id
FROM student s
LEFT JOIN student_class sc ON (sc.student_id = s.student_id)
WHERE sc.student_id IS NULL
1
的follwoing联接查询可能会导致答案
SELECT student.id
FROM student
LEFT JOIN student_class ON student.studentid = student_class.studentid
WHERE student_class.studentid IS NULL
1
你也使用
SELECT StudentID
FROM student
EXCEPT
SELECT StudentID
FROM student_class
相关问题
- 1. 如何从多对多的关系中获取每个对象
- 2. 如何在Hibernate/JPA中表示加权的多对多关系?
- 3. Mysql在一行中获取多对多的关系数据
- 4. 如何在Oracle中获取多对多关系查询?
- 5. 如何从django中的多对多关系中获取值
- 6. grails中的多对多未在关系表中保存记录
- 7. 获取多对多关系加载
- 8. 多对多关系:获取或创建
- 9. 如何避免从一对多关系中获取一行?
- 10. Laravel 4:如何从orderBy与多对多关系中的表中获取数据?
- 11. JSON Api如何在主数据中表示对象中的多对多关系
- 12. 如何获取跨多个表的一对多关系中的实例数?
- 13. 多对多的关系表
- 14. Postgres:在多对多关系表中获取最小和最大行数
- 15. 获取并显示来自多对多关系的数据
- 16. 多对多关系示例
- 17. 如何在关系数据库中有多对多的关系
- 18. 如何在Django中显示多对多关系的元素?
- 19. 如何从第二个多对多关系中获取相关对象?
- 20. 如何在Django中获得多对多的关系?
- 21. 获取Spring中多对多关系的最后一个对象
- 22. 在多对多关系中的定制关系表
- 23. Laravel - 如何在多对多的关系中获取像hasOne这样的数据
- 24. 如何从多对多关系表中获取第三个属性?
- 25. 如何在Entity Framework 4.3中执行多对多的关系?
- 26. 表之间的多对多关系 - 如何在SQL中建模
- 27. 多对多表关系
- 28. MySQL - 多对多关系 - 表
- 29. MySQL多对多关系表
- 30. SQL多对多表关系
在MySQL 5+'NOT IN'上进行了优化,所以它不应该很慢。 – Johan
@Johan:他没有使用MySQL。 –
@Jekke:你有没有试过用'NOT IN'或者你认为它会太慢? –