zoukankan      html  css  js  c++  java
  • sql 查询关键词的执行顺序

    1 问题

    SQL是一门需要进行编译的语言,因此在实际执行过程中是需要数据库编译模块进行编译的。特别是在查询的时候,对于别名的使用,不管是表还是列,错误的使用会导致查询的失败。

    2 详解

    查询语句遵循以下的查询顺序,从执行的顺序来看,基本就可以看到select子句中列的别名是无法在group by和having等子句中出现的。

    优先级 关键词 备注
    1 FROM from子句返回初始结果集
    2 ON 排除不满足join的条件的行
    3 JOIN 多表关联
    4 WHERE 子句排除不满足搜索条件的行
    5 GROUP BY 子句将选定的行收集到group by子句中各个唯一值的组中
    6 HAVING 子句排除不满足搜索条件的行
    7 SELECT 列名,此时可以为列名起别名,列名之间用逗号隔开
    8 DISTINCT 可以在select子句中,找出唯一值
    9 ORDER BY 对结果集进行排序
    10 LIMIT 限定查询的行数,一般放在查询语句的最后面

    简单记为:from->where->group by->having->select->order by

    3 总结

    在mysql中,group by中可以使用列别名;where中不能使用列别名;order by中可以使用列别名。其余像oracle,hive中别名的使用都是严格遵循sql执行顺序的,groupby后面不能用别名。mysql特殊是因为mysql中对查询做了加强。

  • 相关阅读:
    蓝桥杯基础练习 杨辉三角形
    蓝桥杯基础练习 回文数 特殊的数字
    普及图论三题 P1807 P1113 P 4017
    P3916 图的遍历
    [转载][总结]图论入门:建图,DFS,BFS,拓扑排序
    如何转载博客园的文章
    P1892 [BOI2003]团伙
    P1621 集合
    [模板]线性筛素数(欧拉筛)
    P5076 普通二叉树(简化版)
  • 原文地址:https://www.cnblogs.com/easonbook/p/10887377.html
Copyright © 2011-2022 走看看