首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL】:分组查询、排序查询、分页查询、以及执行顺序

1.3 注意事项: 分组之后,查询字段一般为聚合函数和分组字段,查询其他字段无任何意义。 执行顺序: where > 聚合函数 > having 。...排序查询 排序在日常开发中是非常常见一个操作,有升序排序,也有降序排序。...分页查询是数据库方言,不同数据库有不同实现,MySQL中是LIMIT。 如果查询是第一页数据,起始索引可以省略,直接简写为 limit 10。 3.3 案例: A....执行顺序 在讲解DQL语句具体语法之前,我们已经讲解了DQL语句完整语法,及编写顺序,接下来,我们要来说明是DQL语句在执行时执行顺序,也就是先执行那一部分,后执行那一部分。...综上所述,我们可以看到DQL语句执行顺序为: from … where … group by …having … select … order by … limit … ️全篇总结 本文详细介绍了DQL

40910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQLsql执行顺序

    在SQL语句中每个关键字都会按照顺序往下执行,而每一步操作,会生成一个虚拟表,最后产生虚拟表会作为执行最终结果返回。下面的是常用关键字执行顺序: ?...)未匹配行作为外部行添加到虚拟表VT2中,从而产生虚拟表VT3; 4、WHERE:对虚拟表VT3进行WHERE条件过滤,只有符合记录才会被放入到虚拟表VT4; 5、...:对虚拟表VT6进行HAVING条件过滤,只有符合记录才会被插入到虚拟表VT7中; 8、SELECT:执行SELECT操作,选择指定列,插入到虚拟表VT8中; 9...、DISTINCT:对虚拟表VT8中记录进行去重,产生虚拟表VT9; 10、ORDER BY:将虚拟表VT9中记录按照进行排序操作,产生虚拟表VT10; 11、LIMIT...:取出指定行记录,产生虚拟表VT11,并将结果返回。

    2.2K20

    MySQL语句执行顺序

    MySQL语句一共分为11步,如下图所标注那样,最先执行总是 FROM操作,最后执行是LIMIT操作。...其中每一个操作都会产生一张虚拟表,这个虚拟表作为一个处理输入,只是这些虚拟表对用户来说是透明 ,但是只有最后一个虚拟表才会被作为结果返回。...如果没有在语句中指定某一个子句,那么将会跳过相应步骤。 ? 下面我们来具体分析一下查询处理每一个阶段 FORM: 对FROM左边表和右边表计算笛卡尔积。...只有符合记录才会被插入到虚拟表VT4中。 GROUP BY: 根据group by子句中列,对VT4中记录进行分组操作,产生VT5....ORDER BY: 将虚拟表VT9中记录按照进行排序操作,产生虚拟表VT10. LIMIT:取出指定行记录,产生虚拟表VT11, 并将结果返回。

    6.5K100

    数据库MySQL-MySQL执行顺序

    五、MySQL执行顺序 MySQL语句一共分为11步,如下图所标注那样,最先执行总是FROM操作,最后执行是LIMIT操作。...其中每一个操作都会产生一张虚拟表,这个虚拟表作为一个处理输入,只是这些虚拟表对用户来说是透明,但是只有最后一个虚拟表才会被作为结果返回。...如果没有在语句中指定某一个子句,那么将会跳过相应步骤。 ? 下面我们来具体分析一下查询处理每一个阶段 FORM: 对FROM左边表和右边表计算笛卡尔积。...JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3, rug from子句中包含两个以上表的话...只有符合记录才会被插入到虚拟表VT4中。 GROUP BY: 根据group by子句中列,对VT4中记录进行分组操作,产生VT5.

    3.9K20

    MySQL逻辑查询语句执行顺序

    一 SELECT语句关键字定义顺序 SELECT DISTINCT FROM JOIN ON...group_by_list> HAVING ORDER BY LIMIT 二 SELECT语句关键字执行顺序...在这些SQL语句执行过程中,都会产生一个虚拟表,用来保存SQL语句执行结果(这是重点),我现在就来跟踪这个虚拟表变化,得到最终查询结果过程,来分析整个SQL逻辑查询执行顺序和过程。...执行ORDER BY子句 对虚拟表中内容按照指定列进行排序,然后返回一个新虚拟表,我们执行测试SQL语句中ORDER BY total_orders DESC,就会得到以下内容: +------...MySQL数据库LIMIT支持如下形式选择: LIMIT n, m 表示从第n条记录开始选择m条记录。而很多开发人员喜欢使用该语句来解决分页问题。

    3.8K20

    mysql查询语句执行顺序

    Mysql SQL查询处理顺序: (8)select (9)distinct (1)from (3) join <right_table...rollup} (7)having (10)order by (11)limit 第一个被处理子句总是...from,最后执行是limit,每个操作都会产生一个虚拟表,做为下一步输入,这个虚拟表对用户是透明,只有最后一个虚拟表才会返回给用户 (1)from 对和<right_table...join,把相应外部行添加到VT2,形成VT3 如果from中有两个以上表,使用VT3和下一个表再执行一遍前3步,直到处理完所有的表 (4)where 对VT3应用where过滤,把符合<where_condition...对VT8进行去重操作,产生VT9 (10)order by 根据对VT9进行排序,产生VT10 (11)limit 取出指定行记录,产生VT11,返回给用户

    5.1K50

    Mysql-SQL执行顺序

    SQL执行顺序事实上,sql并不是按照我们书写顺序来从前往后、左往右依次执行,它是按照固定顺序解析,主要作用就是从上一个阶段执行返回结果来提供给下一阶段使用,sql在执行过程中会有不同临时中间表...按照固定字段进行分组,产生临时中间表Temp4, "这个过程只是数据顺序发生改变,而数据总量不会变化,表中数据以组形式存在" 实例说明:在temp3表数据中对mobile...,最终只保留id第一次出现那条数据,然后产生临时中间表temp78、order by (order by后字段必须来源于group by分组字段) 会根据Temp7进行顺序排列或者逆序排列...,然后插入临时中间表Temp8,这个过程比较耗费资源 实例说明:这段会将所有temp7临时表中数据按照创建时间(create_time)进行排序,这个过程也不会有列或者行损失9、limit...实例说明:在temp7中排好序数据,然后取前五条插入到Temp9这个临时表中,最终返回给客户端ps:实际上这个过程也并不是绝对这样,中间mysql会有部分优化以达到最佳优化效果,比如在select

    28010

    MySQL执行过程以及顺序

    本篇博客将来探讨这个问题: 本篇博客目录 一:MySQL执行过程 二:MySQL执行过程中状态 三:MySQL执行顺序 四:总结 一:MySQL执行过程 MySQL整体执行过程如下图所示: 1.1...,状态包含了从客户端发起请求到后台服务器处理过程,包括加锁过程、统计存储引擎信息,排序数据、搜索中间表、发送数据等。...囊括了所有的MySQL所有状态,其中具体含义如下图: 三:sql执行顺序 事实上,sql并不是按照我们书写顺序来从前往后、左往右依次执行,它是按照固定顺序解析,主要作用就是从上一个阶段执行返回结果来提供给下一阶段使用...)进行排序,这个过程也不会有列或者行损失 3.9:limit limit对中间表Temp8进行分页,产生临时中间表Temp9,返回给客户端。...筛选出找到数据集 四:总结 本篇博客总结了MySQL执行过程,以及sql执行顺序,理解这些有助于我们对sql语句进行优化,以及明白MySQLsql语句从写出来到最终执行轨迹,有助于我们对sql

    1.5K20
    领券