1. 程式人生 > >MySQL——關於MySQL分組查詢group by和order by獲取最新時間內容的方法

MySQL——關於MySQL分組查詢group by和order by獲取最新時間內容的方法

假如現在有一張表table,如下:



如果我們想查詢出來zhang和wang最新日期的記錄

如果我們直接使用:

SELECT * FROM table GROUP BY name ORDER BY date;

查詢結果如下:

很明顯,這不是我們想要的資料,原因是msyql已經的執行順序是

寫的順序:select ... from... where.... group by... order by.. 

執行順序:from... where...group by.... select ... order by...

所以在order by拿到的結果裡已經是分組的完的最後結果。 
由from到where的結果如下的內容。 



到group by時就得到了根據category_id分出來的多個小組 

到了select的時候,只從上面的每個組裡取第一條資訊結果會如下



即使order by也只是從上面的結果裡進行排序。並不是每個分類的最新資訊。 
回到我的目的上 --分類中最新的資訊 
根據上面的分析,group by到select時只取到分組裡的第一條資訊。

這裡可以使用子查詢的方法

SELECT * FROM (SELECT * FROM table ORDER BY date desc) table1  GROUP BY name;