您好,
SELECT DISTINCT
select_list
FROM
left_table
LEFT JOIN
right_table ON join_condition
WHERE
where_condition
GROUP BY
group_by_list
HAVING
having_condition
ORDER BY
order_by_condition
执行顺序如下:
FROM:对SQL语句执行查询时,首先对关键字两边的表以笛卡尔积的形式执行连接,并产生一个虚表V1。虚表就是视图,数据会来自多张表的执行结果。
ON:对FROM连接的结果进行ON过滤,并创建虚表V2
JOIN:将ON过滤后的左表添加进来,并创建新的虚拟表V3
WHERE:对虚拟表V3进行WHERE筛选,创建虚拟表V4
GROUP BY:对V4中的记录进行分组操作,创建虚拟表V5
HAVING:对V5进行过滤,创建虚拟表V6
SELECT:将V6中的结果按照SELECT进行筛选,创建虚拟表V7
DISTINCT:对V7表中的结果进行去重操作,创建虚拟表V8,如果使用了GROUP BY子句则无需使用DISTINCT,因为分组的时候是将列中唯一的值分成一组,并且每组只返回一行记录,所以所有的记录都h是不同的。
ORDER BY:对V8表中的结果进行排序。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。