select的执行顺序

  • Post author:
  • Post category:其他


================ select 执行顺序=======================

一 、select语句关键字的定义顺序:

select distinct <select_list>

from <left_table>

<join_type> join

on <join_condition>

where <where_condition>

group by <group_by_list>

having <having_condition>

order by <order_by_condition>

limit <limit_number>

二 、 select语句关键字的执行顺序:

(7) select

(8) distinct <select_list>

(1) from <left_table>

(3) <join_type> join <right_table>

(2) on <join_condition>

(4) where <where_condition>

(5) group by <group_by_list>

(6) having <having_condition>

(9) order by <order_by_condition>

(10) limit <limit_number>

第一步 执行 from 知道先从<left_table>这个表开始的

第二步 执行 on 过滤 根据 <join_condition> 这里的条件过滤掉不符合内容的数据

第三步 执行 join 添加外部行

——– inner join 找两张表共同的部分

——— left join 以左表为准,找出左表所有的信息,包括右表没有的

——— right join 以右表为准,找出左表所有的信息,包括左表没有的

——— #注意:mysql不支持全外连接 full JOIN 可以用union

第四步 执行 where 条件 where后加需要满足的条件,然后就会得到满足条件的数据

第五步 执行 group by 分组 当我们得到满足where条件后的数据时候,group by 可以对其进行分组操作

第六步 执行 having 过滤 having 和 group by 通常配合使用,可以对 满足where条件内容进行过滤

第七步 执行 select 打印操作 当以上内容都满足之后,才会执行得到select列表

第八步 执行 distinct 去重 得到select列表之后,如果指定有 distinct ,执行select后会执行 distinct去重操作

第九步 执行 order by 排序 以上得到select列表 也经过去重 基本上就已经得到想要的所有内容了 然后就会执行 order by 排序asc desc

第十步 执行 limit 限制打印行数,我们可以用limit 来打印出我们想要显示多少行。



版权声明:本文为m0_47090638原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。