要查询笔试过60分的学员
表连接的方式:SELECT stuName FROM stuInfo
INNER JOIN stuMarks ON stuInfo.stuNo=stuMarks.stuNo
WHERE writtenExam=60
子查询的方式:SELECT stuName FROM stuInfo where stuno =
(SELECT stuNO FROM stuMarks WHERE writtenExam=60)
GO
一般来说,表连接都可以用子查询替换,但有的子查询却不能用表连接替换
子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据
子查询不能使用ORDER BY子句
表连接更适合于查看多表的数据
表中有无索引,环境的不同等等都会对查询的结果造成影响,没有明确的一定孰优孰劣。事实上一般情况下2者的效率差不多。
不过一般的默认规则是,能用表连接的话尽量用表连接代替子查询,尤其是多表查询的时候。
|