mysql独特的声明

时间:2013-04-12 10:58:46

标签: mysql sql group-by

我有一张像这样的桌子

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

有谁能告诉我如何只为每个代码获取一个结果(按日期输入的最新条目)?

3 个答案:

答案 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