MySQL——關於MySQL分組查詢group by和order by獲取最新時間內容的方法
阿新 • • 發佈:2019-02-17
假如現在有一張表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;