今天 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
================
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
================
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