mysql分组排序以及排序失效问题

一、要求
mysql分组排序以及排序失效问题_第1张图片
我们需要按公司分组,返回最新的一条消息,理论上

SELECT
	A.* 
FROM
	( SELECT * FROM `bac_distribution` ORDER BY distribution_id DESC ) A 
GROUP BY
	A.customer

就可以了吧,实际上查到的却是:
mysql分组排序以及排序失效问题_第2张图片
原因是mysql做了优化,直接将内查询去掉了。

EXPLAIN EXTENDED 
SELECT
	A.* 
FROM
	( SELECT DISTINCT * FROM `bac_distribution` ORDER BY distribution_id DESC ) A 
GROUP BY
	A.customer;
SHOW WARNINGS;

两行选中,一起查看
mysql分组排序以及排序失效问题_第3张图片
二、解决方案
在里面的查询上做一点操作就可以了 DISTINCT LINMIT都可以,倾向于第一个

SELECT A.* FROM
(SELECT DISTINCT* FROM `bac_distribution`  ORDER BY distribution_id desc ) A
GROUP BY A.customer
SELECT A.* FROM
(SELECT * FROM `bac_distribution`  ORDER BY distribution_id desc limit 10000) A
GROUP BY A.customer

mysql分组排序以及排序失效问题_第4张图片

你可能感兴趣的:(数据库mysql,mysql,数据库,sql)