关于sql语言相关子查询的执行顺序的问题
----------------------------------表结构----------------------------------------------------
--学生表tblStudent(编号StuId、姓名Stuname、年龄Stuage、性别Stusex)
--课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId)
--成绩表tblScore(学生编号StuId、课程编号CourseId、成绩Score)
--教师表tblTeacher(教师编号TeaId、姓名TeaName)
----------------------------------------------------------------------------------------------
查询所有课程成绩小于60分的同学学号
答案是:
select ts.StuId
from tblStudent ts
where 60>
all(select tc.Score from tblScore tc where tc.StuId=ts.StuId)
----------------------------------------------------------------------------------------------
我的问题是:
我以前看别人说的,sql的执行顺序是
FROM
WHERE
GROUP BY
HAVING
SELECT
DISTINCT
UNION
ORDER BY
那上面的答案的执行顺序 是不是
from tblStudent ts
where 60>
all
(from tblScore tc
where tc.StuId=ts.StuId
select tc.Score )
select ts.StuId
如果执行顺序是这样的,tblStudent里的StuId是最后去提取的,那在子查询里,ts.StuId又是哪里来的呢?
总之我对这个答案的执行顺序有点疑惑,有谁能帮我理一理这个答案呢?谢谢!!