MySQL的书写顺序与执行逻辑
初学者应该都知道SQL的书写顺序和执行顺序不一样,下面这张图分别显示了是怎样的顺序:
为便于一步一步演示SQL实际取数的过程,下面以经典的学生题数据来举例,选取了其中的score表(18条记录)和student表(8条记录),两张表的数据如下:
score表中的字段含义为:s_id学生编号,c_id课程编号,score分数;student表中的字段含义为:s_id学生编号,s_name学生姓名,s_age学生年龄,s_sex学生性别。
假设我现在有一个SQL取数需求:写一段SQL找出每科平均分大于60分的男学生学号、姓名、出生日期、平均分,结果按照平均分降序、学号升序排列,取前三名。
(1) select (2)distinct sc.s_id,st.s_name,st.s_age,avg(score)
(3) from score sc
(4) left join student st
(5) on sc.s_id = st.s_id