我有一张像这样的桌子
ID | date | CODE
1 01-02-13 VDOT
2 03-02-13 CMAX
3 05-02-13 VDOT
1 05-02-13 CMAX
1 09-02-13 VDOT
我的SQL查询如下
SELECT * FROM Table_Name ;
这显然显示了所有结果,但我只需要显示每个代码的一个实例,其中日期是最新的,所以我的结果需要看起来像这样
1 09-02-13 VDOT
1 05-02-13 CMAX
有谁能告诉我如何只为每个代码获取一个结果(按日期输入的最新条目)?
答案 0 :(得分:2)
SELECT a.*
FROM TableName a
INNER JOIN
(
SELECT CODE, MAX(date) max_date
FROM TableName
GROUP BY CODE
) b ON a.Code = b.Code AND
a.date = b.max_date
答案 1 :(得分:1)
试试这个:
SELECT * FROM Table_Name
GROUP BY CODE
ORDER BY date DESC
这将在分组后进行ORDER。因此在分组结果中给出了ORDERS。
但是现在试试这个:
SELECT * FROM
(SELECT * FROM Table_Name ORDER BY date DESC) tx2
GROUP BY CODE
这将确保在GROUP之前正确的日期ORDER。
答案 2 :(得分:0)
SELECT * FROM
TABLE AS A
JOIN
(
SELECT D.CODE, MAX(D.DATE) AS DATE FROM TABLE AS D
GROUP BY D.CODE
) AS E
WHERE
A.CODE = E.CODE
AND A.DATE = E.DATE