如何在 MySQL 使用 GROUP BY 時選 last id

今天 Mowd 遇到一個使用情境
Table 內容如下

id name crdate
================
1 a 2012-8-1
2 a 2012-8-1
3 b 2012-8-2
4 c 2012-8-3

希望 SELECT 出來的資料是這樣

id name crdate
================
2 a 2012-8-1
3 b 2012-8-2
4 c 2012-8-3

如果同一天,就選 id 最大的
最後在網路上找到兩種解法

解法一

SELECT a.id, a.name, a.crdate
FROM test a LEFT JOIN test b ON a.crdate=b.crdate AND b.id > a.id
WHERE b.id IS NULL
ORDER BY a.id ASC

解法二

SELECT a.id, a.name, a.crdate
FROM test a
WHERE a.id=
(
SELECT b.id
FROM test b
WHERE a.crdate=b.crdate
ORDER BY crdate DESC
LIMIT 1
)
ORDER BY a.id ASC

發表迴響

你的電子郵件位址並不會被公開。