Mysql的group by分组是先排序后分组;对于用户想要先排序后分组获取最新的记录,通过group by发现不可行
验证步骤:
1、创建一个tt表进行验证
CREATE TABLE `tt` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`num` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、插入数据
3、业务场景,想取tt表中通过name中按升序先排序,然后num进行分组,取name最小的一行数据
SELECT
*, GROUP_CONCAT(id),
GROUP_CONCAT(NAME)
FROM
(
SELECT
*
FROM
tt
ORDER BY
num,
NAME ASC
) a
GROUP BY
num;
结果:如下图所示没按照order by进行排序取数据
explain分析