具有最高ID的行

时间:2012-09-04 06:35:47

标签: sql

您有三个字段ID,日期和总计。您的表包含同一天的多行,这些行是有效数据,但出于报告目的,您每天只需显示一行。应该返回每天ID最高的行,其余的应该是用户隐藏的(不返回)。 为了更好地描述以下问题,样本数据和样本输出:

ID, Date, Total
1, 2011-12-22, 50
2, 2011-12-22, 150

正确的结果是:

2, 2012-12-22, 150

正确的输出是2011-12-22日期的单行,选择此行是因为它具有最高的ID(2> 1)

7 个答案:

答案 0 :(得分:1)

SELECT *
FROM table
WHERE ID IN ( SELECT MAX(ID)
              FROM table
              GROUP BY Date )

答案 1 :(得分:1)

这样可行。

SELECT  *
FROM    tableName a
            INNER JOIN
            (
                SELECT `DATE`, MAX(ID) maxID
                FROM tableName
                GROUP BY `DATE`
            ) b ON a.id = b.MaxID AND
                a.`date` = b.`date`

SQLFiddle Demo

答案 2 :(得分:1)

假设你有一个支持窗口函数的数据库,并且date列确实只是date(而不是datetime),那么像:

SELECT
    * --TODO - Pick columns
FROM
    (
       SELECT ID,[Date],Total,ROW_NUMBER() OVER (PARTITION BY [Date] ORDER BY ID desc) rn
       FROM [Table]
    ) t
WHERE
   rn = 1

每天应生成一行 - 并且任何给定日期的所选行都是ID值最高的行。

答案 3 :(得分:0)

Select MAX(ID),Data,Total from foo

for MySQL

答案 4 :(得分:0)

可能

SELECT * FROM your_table ORDER BY ID DESC LIMIT 1

答案 5 :(得分:0)

另一种简单的方法是

SELECT TOP 1 * FROM YourTable ORDER BY ID DESC

而且,我认为这是最简单的方式!

答案 6 :(得分:0)

SELECT * FROM TABLE_SUM S WHERE S.ID = 
( 
SELECT MAX(ID) FROM TABLE_SUM
WHERE CDATE = GG.CDATE
GROUP BY CDATE 
)