天天看點

mysql分組排序以及排序失效問題

一、要求

mysql分組排序以及排序失效問題

我們需要按公司分組,傳回最新的一條消息,理論上

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

就可以了吧,實際上查到的卻是:

mysql分組排序以及排序失效問題

原因是mysql做了優化,直接将内查詢去掉了。

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

兩行選中,一起檢視

mysql分組排序以及排序失效問題

二、解決方案

在裡面的查詢上做一點操作就可以了 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分組排序以及排序失效問題