1. 关于order by + 分组 + union all 在 子查询结果集数量等于1时结果集合并不成功的记录
业务场景如下:
1、基于某个数据量较大的表,根据条件筛选其在当天的最大值和当月的最大值
2、因为数据库版本是5.7.30,所以这里没有使用分组函数
3、因为数据量太大,使用max()在全表扫描的情况下,sql执行速度太慢,所以需要先走索引过滤数据之后,再进行分组排序,取第一条数据
这里根据类似的表结构建立了测试表,DDL语句如下:
CREATE TABLE `test` (
`id` int(11) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`value` int(11) DEFAULT NULL,
`param_column` int(11) DEFAULT NULL,
`date_time` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入测试数据:
INSERT INTO test
(id, name, value, param_column, date_time)
VALUES(1, '小明', 99, 1, '2021-05-27 12:00:00');
INSERT INTO test
(id, name, value, param_column, date_time)
VALUES(2, '小红', 199, 1, '2021-05-01 12:00:00');
INSERT INTO test
(id, name, value, param_column, date_time)
VALUES(3, '小白', 100, 1, '2021-05-22 12:00:00');
INSERT INTO test
(id, name, value, param_column, date_time