开发者社区> 问答> 正文

哪个牛牛能告诉我SQL语句的执行顺序?

已解决

执行顺序

展开
收起
可乐大侠 2021-10-01 15:37:54 925 0
2 条回答
写回答
取消 提交回答
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。
    采纳回答

    您好,

    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表中的结果进行排序。
    
    2021-10-01 15:44:47
    赞同 展开评论 打赏
  • 可以

    2022-08-29 21:47:07
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载