一、要求
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLiBTM4AzNzEGNyEzYkRGMiFjZzQTOmZzYzgDM2YGOhZ2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
我們需要按公司分組,傳回最新的一條消息,理論上
SELECT
A.*
FROM
( SELECT * FROM `bac_distribution` ORDER BY distribution_id DESC ) A
GROUP BY
A.customer
就可以了吧,實際上查到的卻是:
原因是mysql做了優化,直接将内查詢去掉了。
EXPLAIN EXTENDED
SELECT
A.*
FROM
( SELECT DISTINCT * FROM `bac_distribution` ORDER BY distribution_id DESC ) A
GROUP BY
A.customer;
SHOW WARNINGS;
兩行選中,一起檢視
二、解決方案
在裡面的查詢上做一點操作就可以了 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