UNION ALL和order by 的关系,group by 和字段的关系,以及MAX函数

1、UNION ALL 和 ORDER BY的关系

  • 默认是对 UNION ALL 的结果进行排序

@坚果云附件 UNION ALL 排序问题.xmind - 坚果云

2、GROUP BY 和 ORDER BY的关系

参考:mysql group by 排序问题_闷声发大财 - CSDN 博客

原始数据:

2.1、ORDER BY 默认是对 GROUP BY 的结果进行排序

结果如下:无论根据什么字段进行排序,排序的数据ID都为1、2。表示GROUP BY选取的结果始终是一致的,ORDER BY 只对该结果排序。

2.2、MAX()函数只取该列的最大值,并非最大值对应的一行。

  • 如果只是取某个字段种的最大或者最小值,可以使用MAX()函数。同时该字段可以不必出现在GROUP BY 之后。
  • 为什么不是最大值对应的一行,因为10和13对应的ID分别为9和12

-

原理:相当于是在 GROUP BY 后选出本组的最大,对分组没有起到任何影响!

2.3、使用子查询,完美解决

注:MYSQL5.7 版本的子查询的排序需要加 LIMIT 排序才有效

如下:

  • 第二条没生效,第三条生效是因为Mysql版本问题,请知悉。

2.4 子查询的替代方案

方案一:

mysql group by 组内排序方法_傲雪星枫 - CSDN 博客

如果我们是想找到某一行对应的数据。那么可以分多步执行

  • 1、使用MAX函数,找到需要的行的ID;
  • 2、使用right join 上一步的数据,就得到了最终结果;

原文地址:https://www.cnblogs.com/buwuliao/p/12155921.html

时间: 2024-10-09 15:21:29

UNION ALL和order by 的关系,group by 和字段的关系,以及MAX函数的相关文章

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all;  Select 列 into 新表;字符串函数;日期函数 SQL聚合函数 MAX(最大值).MIN(最小值).AVG(平均值).SUM(和).COUNT(数量:记录的条数) 聚合函数对null不计算.如果一行数据都是null,count(*)包含对空值行.重复行的统计. --聚合函数演示 selec

SQL 语句中union all和order by同时使用

最近做的一个财物管理系统中查询过期或逾期的存储过程,返回 “财物所属的案件名称”,“财物名称”,“财物编号”,“过期或逾期时间”(超期或逾期前7天开始预警). 遇到“union all 内不能使用 order by”的问题,百度了很久,都没有一个找到一个好的解决方案.最终还是自己实现了,记录一下. 为什么用存储过程,非得用union all 而不在程序中拼接表数据? 这个存储过程不是供我们Web程序使用的,它是提供给运行在服务器上的C/S程序调用(用来投放到机房外的LED显示屏). 因为这个C/

类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)

类图的概念 (转) 一.概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图基础上,可以使用状态图.协作图.组件图和配置图等进一步描述系统其他方面的特性. 类图包括7个元素:类(Class).接口(Interface).协作(collaboration).依赖关系(Dependency).泛化关系(Generalization).关联关系(Association)以及实现关系(Realization).

数据库主从表、关系;主、外键关系和作用

从数据库是主数据库的备份,当主数据库变化时从数据库要更新,这些数据库软件可以设计更新周期.这是提高信息安全的手段.主从数据库服务器不在一个地理位置上,当发生意外时数据库可以保存.主外键的关系结构:1,一对一,不用引用主外键,把它们放一个表中即可例如:一个学生只能有一个卡号,那么学生跟卡号放在一个表中即可2,一对多,引用主外键,'一'相当于主键,'多'即是引用主键的外键.例如:一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系:3,多对多关系,需要创建一个表,表中需要两个字段

MongoDB group 数据不同字段distinct问题解决办法

近日被mongoDB的聚合难住了,条件: 1.表中有字段mac,pv,ip,dates,type 2.要求,根据ip来group,计算pv合计,不重复的mac数,不重复的ip数 3.下面是解决办法,说明:MongoDB权威指南中使用的是对象,即"macs":{},然后在reduce里面用 in来查找,prev.macs[obj.mac]=""来添加,容易出现Unexpected number错误 现在改成数组,并且在finalize 中清除,感觉很方便 1 db.t

Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理

Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理 本博文主要介绍 Laravel 框架中 Eloquent  对一对多关系的处理,在 Laravel Administrator(后台扩展包) 您的数据库可能是彼此相关的.比如,一篇博客文章可能有许多评论,或者一个订单与下订单的用户相关.Eloquent 使得管理和处理这些关系变得简单.Laravel 提供了四种类型的关系: -一对一 -一对多 - 多对多 - 多态关系 一对多 一个一对多关系的例子是一篇博客文章有许多评

SQLSever 第二堂课,主要学习内容为top查询前多少行,distinct去重,order by排序,group by分组,最重要子查询

create database xuesheng drop database xusheng use xuesheng go create table xueshengxinxi ( code int primary key identity(1,1)not null, name varchar(50) not null, age int not null, sex varchar(50) not null, hight int not null, [weight] int not null,

MySQL中MAX函数与Group By一起使用的注意事项(转)

mysql> select * from test; +----+-------+------+-------+ | id | name | age | class | +----+-------+------+-------+ | 1 | qiu | 22 | 1 | | 2 | liu | 42 | 1 | | 4 | zheng | 20 | 2 | | 3 | qian | 20 | 2 | | 0 | wang | 11 | 3 | | 6 | li | 33 | 3 | +----+

group by多字段分组

在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据.比如有一个学生选课表,表结构如下: Table: Subject_Selection Subject Semester Attendee --------------------------------- ITB001 1 John ITB001 1 Bob ITB001 1 Mickey ITB001 2 Jenny ITB001 2 James MKB114 1 John MKB1