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

MySQL | 如何对查询结果集进行排序

数据操作语言:结果集排序 如果没有设置,查询语句不会对结果集进行排序。也就是说,如果想让结果集按照某种顺序排列,就必须使用 ORDER BY 子句。 SELECT .........ASC 代表升序(默认),DESC 代表降序 如果排序列是数字类型,数据库就按照数字大小排序,如果是日期类型就按日期大小排序,如果是字符串就按照字符集序号排序。...默认情况下,如果两条数据排序字段内容相同,那么排序会是什么样子?...idx_type ON t_message(type);SHOW INDEX FROM t_message;ALTER TABLE t_message ADD INDEX idx_type(type);SQL...数据库会先按照首要排序条件排序,如果遇到首要排序内容相同的记录,那么就会启用次要排序条件接着排序。

6.3K10

Mysql常用sql语句(7)- order by 对查询结果进行排序

测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 通过select出来的结果集是按表中的顺序来排序的...,order by允许我们对查询结果针对某个字段进行排序 实际场景:根据数据的创建时间、更新时间、文件大小、商品价格等字段来排序 order by的语法格式 ORDER BY [,...[ASC | DESC] ASC:升序排序,默认值 DESC:降序排序 注意点 order by关键字后可以跟子查询(后面展开讲) 如果字段值是NULL,则当最小值处理 如果指定多个字段排序,则按照字段的顺序从左往右依次排序...多字段排序的栗子 先根据sex倒序排序,然后根据height升序排序 select * from yyTest order by sex desc, height asc; ?...知识点 对多个字段排序时,只有第一个排序字段有相同的值,才会对第二个字段进行排序,以此类推 如果第一个排序字段的所有数据都是唯一的,将不会对第二个排序字段进行排序,以此类推 按字母(A-Z进行排序,大小写不敏感

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

    【MySQL】MySQL表的增删查改(初阶)

    如果是98.05这种直接对小数点精度进行调整了(四舍五入)如果是10000,就无法调整精度,就直接报错了。 SQL对于类型本身检查并不严格,会尽可能的进行“隐式类型转换”。...不加order by,看起来好像是根据插入的顺序,依次排序的,但实际上,mysql并没有对顺序做任何承诺。 如果是要排序的列中,有NULL,NULL视为“最小值”。...按行,进行筛选。 通过where指定一个“条件” 把查询到的每一行,都带入到条件中,看条件是真还是假 把条件为真的行,保留(作为临时表结果),条件为假的,舍弃。...“=”在SQL中是“比较相等”的意思(在where字句中) “”是针对NULL特殊处理了。...就是靠where子句,通过条件来针对结果进行限制。那么怎么做,才能保证数量可控呢?在查询操作中,引入了一个limit,通过limit来限制查询结果的数量。

    3.5K20

    SQL性能优化基础|技术创作特训营第一期

    SQL 的一些进阶使用技巧1、巧用 CASE WHEN 进行统计来看看如何巧用 CASE WHEN 进行定制化统计,假设我们有如下的需求,希望根据左边各个市的人口统计每个省的人口图片使用 CASE WHEN...怎样做可以减少排序呢。...2、使用 EXISTS 代表 DISTINCT为了排除重复数据, DISTINCT 也会对结果进行排序,如果需要对两张表的连接结果进行去重,可以考虑用 EXISTS 代替 DISTINCT,这样可以避免排序...,如果事先通过 WHERE 子句能筛选出一部分行,能减轻排序的负担在 WHERE 子句中可以使用索引,而 HAVING 子句是针对聚合后生成的视频进行筛选的,但很多时候聚合后生成的视图并没有保留原表的索引结构...9、灵活使用 HAVING 子句这一点与上面第八条相呼应,对聚合结果指定筛选条件时,使用 HAVING 是基本的原则,可能一些工程师会倾向于使用下面这样的写法:SELECT * FROM (SELECT

    38620

    SQL 进阶技巧(上)

    的一些进阶使用技巧 SQL 的优化方法 SQL 的书写规范 在介绍一些技巧之前,有必要强调一下规范,这一点我发现工作中经常被人忽略,其实遵循好的规范可读性会好很多,应该遵循哪些规范呢 1、 表名要有意义...SQL 的一些进阶使用技巧 一、巧用 CASE WHEN 进行统计 来看看如何巧用 CASE WHEN 进行定制化统计,假设我们有如下的需求,希望根据左边各个市的人口统计每个省的人口 ?...怎样做可以减少排序呢。...2、使用 EXISTS 代表 DISTINCT 为了排除重复数据, DISTINCT 也会对结果进行排序,如果需要对两张表的连接结果进行去重,可以考虑用 EXISTS 代替 DISTINCT,这样可以避免排序...,如果事先通过 WHERE 子句能筛选出一部分行,能减轻排序的负担 在 WHERE 子句中可以使用索引,而 HAVING 子句是针对聚合后生成的视频进行筛选的,但很多时候聚合后生成的视图并没有保留原表的索引结构

    1.1K20

    网易MySQL微专业学习笔记(十一)-MySQL业务优化与设计

    保留查询结果所必需的的冗余字段,避免频繁join 拆分大字段 拆分大字段到单独表中,避免范围扫描代价大 例:博文表拆分两份,标题表只保留标题和内容缩略部分,用于快速批量返回标题列表。...根据数据获取的频率或数据不同对热点数据做特殊处理 热点写数据特殊处理 根据数据获取的频率或数据不同对热点数据做特殊处理 准实时统计 对不需要精确结果的技术等统计要求,建立定期更新结果表 实时统计改进1...统计和后台需求 统计运行SQL往往和线上有很大不同 利用Mysql一主多从,主从复制可以建不同索引特性将统计分流到特定从库 包括一些特殊用户批量查询等,所有对线上有IO亚罗的查询都要读写分离。...评审业务schema和SQL设计 偏重关注性能 是业务优化的主要入口之一 审核提前发现问题,进行优化 上线后通过监控或巡检发现问题,进行优化 表和字段命名是否合规 字段类型,长度设计是否适当 表关联关系是否合理...主键,更新时间保留字段等是否符合要求 约束,默认值等配置是否恰当 了解业务,表数据量,增长模式 数据访问模式,均衡度 根据也无需求,表是否需要分区,是否有数据什么周期 SQL语句审核 SQL语句的执行频率

    1K10

    SQL中这些与NULL有关的细节,你知道吗?

    NULL是SQL常见的关键字之一,表示“空,无”的意思。它在SQL中是一种独特的存在,今天来汇总一下与它相关的知识点,看看这些你都知道吗?...1.NULL是一种特殊的值,对某字段使用distinct 关键字时,NULL和一般值一样,都会排重,只保留一个值。 ?...6.如果某列含有null,使用group by 进行聚合时,null值会单独保留一行。 这一点和第一点有点类似,见下面代码。 ? 7.null占用的空间是多少? ?...8.对NULL进行排序,结果如何? ? 上面的结果,升序排序,NULL在最开头,但这并不能说明NULL比1小,因为我们前面提到是不能对NULL使用比较运算符的。...《SQL基础教程》 2.https://www.cnblogs.com/aflyun/p/11125756.html

    2.8K10

    数据库优化:SQL高性能优化指南,助你成就大神之路!

    怎样做可以减少排序呢。...2、使用 EXISTS 代表 DISTINCT 为了排除重复数据, DISTINCT 也会对结果进行排序,如果需要对两张表的连接结果进行去重,可以考虑用 EXISTS 代替 DISTINCT,这样可以避免排序...,如果事先通过 WHERE 子句能筛选出一部分行,能减轻排序的负担 在 WHERE 子句中可以使用索引,而 HAVING 子句是针对聚合后生成的视频进行筛选的,但很多时候聚合后生成的视图并没有保留原表的索引结构...在索引列上进行了运算, 第二个 SQL 对索引列使用了函数,均无法用到索引,正确方式是把列单独放在左侧,如下: SELECT * FROM SomeTable WHERE col_1 > 100...9、灵活使用 HAVING 子句 这一点与上面第八条相呼应,对聚合结果指定筛选条件时,使用 HAVING 是基本的原则,可能一些工程师会倾向于使用下面这样的写法: SELECT * FROM (SELECT

    86920

    BI-SQL丨开窗函数(一)

    [1240] 开窗函数(一) 开窗函数在SQL语句中属于一种特殊的用法。开窗函数的引入,是为了既可以显示聚集前的数据,也要显示聚集后的数据。...例子1:使用Rank函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组。...其中4因为并列排名的原因,排序位数不保留。 例子2:使用Dense_Rank函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组。...其中,4的排序位数顺延保留。 例子3:使用Row_Number函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组。...例子4:使用Ntile函数,对Product进行排序,排序依据为Price,按照ProductGroup进行分组,组内分为4组。

    85430

    游戏行业实战案例 4 :在线时长分析

    那么,如何对玩家的登录时间、登出时间进行一一对应呢? 玩家每次登录后必然伴随着登出,因此玩家的登录时间顺序与登出时间顺序是一致的。.../登出时间 asc 对登录登出时间进行排序的 SQL 的书写方法: #对每个玩家每天的登录时间进行排序 select 角色id,日期,登录时间,rank() over(partition by 角色id...by 角色id,日期 order by 登出时间 asc) as 登出排名 from 登出日志; 查询结果如下: 对每个玩家每天的登录登出时间进行排序后,就可以将登录登出时间进行一一对应了。...如何一一对应呢?通过横向联结就可以实现,即使用 join 联结方法。...在此选择 case when 子句进行条件判断。 那么,如何得到当天 23:59:59 呢?

    23010

    京东一面:MySQL 中的 distinct 和 group by 哪个效率更高?太刁钻了吧!

    原因是distinct 和 group by都会进行分组操作,但group by可能会进行排序,触发filesort,导致sql执行效率低下。...,group by的原理是先对结果进行分组排序,然后返回每组中的第一条数据。...例如以下两条sql(只单单看表格最后extra的内容),我们对这两条sql进行分析,可以看到,在extra中,这两条sql都使用了紧凑索引扫描Using index for group-by。...所以,在Mysql8.0之前,Group by会默认根据作用字段(Group by的后接字段)对结果进行排序。...原因是distinct 和 group by都会进行分组操作,但group by在Mysql8.0之前会进行隐式排序,导致触发filesort,sql执行效率低下。

    2K30

    OLAP与数据仓库------《Designing Data-Intensive Applications》读书笔记4

    注意,对每个列进行独立排序是没有意义的,因为我们将不再知道列中属于哪一行。可以新建一个索引来指向对应的行。有序又要求高效,所以排序列的存储通常都是通过上文提及的SSTable格式在内存之中灵活处理。...如前所述,数据仓库查询通常涉及聚合函数,如SQL中的计数、总和、平均值、最小值或最大值。如果相同的聚合被许多不同的查询使用,那么每次都对原始数据进行处理是十分浪费的。...为什么不缓存查询中经常使用的一些计数或总数呢? 在关系型的数据模型中,它通常被定义为标准(虚拟)视图:一个表一样的对象,其内容是一些查询的结果。虚拟视图只是编写查询的快捷方式。...当您从虚拟视图中读取时,SQL引擎将它展开为视图的底层查询,然后处理展开的查询。而物化视图是将实际的查询结果写入磁盘,不需要额外的计算过程。...因此,大多数数据仓库尽量保留尽可能多的原始数据,并且只使用物化视图作为对某些常用查询的性能提升。 小结: 梳理了OLAP与数据仓库的联系,同时总结了几种在数据仓库种子常用的存储结构与对应的优化方式。

    67230

    《SQL必知必会》读书笔记

    order by 排序还有一个比较值得注意的特点是:多列排序只对出现相同的值进行排序,也就是说多个行的值相同的情况下,数据库才会对后面指定对排序列进行排序,如果多列查询前面对列都是唯一的值是不能保证后面的内容是有序的...因为 NULL 比较特殊,所以在进行匹配过滤或非匹 配过滤时,不会返回这些结果。...unioin all:不对结果进行排序,只是简单的把结果拼在一起,但是拼在一起的结果不保证顺序。...其他类型的 UNION: 部分数据库支持一些特殊的组合查询方式,当然都可以使用连接查询替代,所以如果有可能出现换库的可能性,就不要写一些针对某款数据库的SQL,以免增加阅读理解难度和迁移难度。...对于部分数据库处理支持去重之外,支持返回指定数量的结果,比如SQL SERVER的 TOP函数。 计算字段 如何拼接字符?拼接字符的方式有两种:“||”符号和 "+"符号。

    77910

    数据分析面试手册《SQL篇》

    数据分析面试手册《SQL篇》 前言:在当前的数据分析岗位中,多数人在做着SQL-Boy\SQL-Girl的工作,在数据分析面试中,SQL是必不可少的一环,对于SQL不仅有常见函数用法的考察,更多时候面试官喜欢出一些编程类题目...RANK():并列排序,会跳过重复的序号(1、1、3...) DENSE_RANK():并列排序,不会跳过重复的序号(1、1、2...) Q2 : 如何进行MySQL优化?...考频: 难度: SQL进行优化的方式多种多样,这里列出10种常见方法: 1. 使用select具体字段代替select* 2. 查询结果数量已知时,使用limit限定 3....,对于该类比较我们可以对日期做差来完成,对于给定的数据表赋予两个别名得到两个相同的表u和v,对u和v的日期进行做差,如果差值为1则证明正在比较'今天和明天'的数据,此时再对温度做差得到结果即可。...但是需要思考的是如果在不使用窗口函数的情况下我们如何完成呢?

    1.5K31

    《SQL必知必会》读书笔记

    order by 排序还有一个比较值得注意的特点是:多列排序「只对出现相同的值进行排序」,也就是说多个行的值相同的情况下,数据库才会对后面指定对排序列进行排序,如果多列查询前面对列都是唯一的值是不能保证后面的内容是有序的...因为 NULL 比较特殊,所以在进行匹配过滤或非匹 配过滤时,不会返回这些结果。...unioin all:不对结果进行排序,只是「简单的把结果拼在一起」,但是拼在一起的结果「不保证顺序」。...❝其他类型的 UNION:部分数据库支持一些特殊的组合查询方式,当然都可以使用连接查询替代,所以如果有可能出现换库的可能性,就不要写一些针对某款数据库的SQL,以免增加阅读理解难度和迁移难度。...对于部分数据库处理支持去重之外,支持返回指定数量的结果,比如SQL SERVER的 TOP函数。 计算字段 如何拼接字符?拼接字符的方式有两种:“||” 符号和 "+" 符号。

    82820
    领券