您有三个字段 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)
您有三个字段 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)
SELECT *
FROM table
WHERE ID IN ( SELECT MAX(ID)
FROM table
GROUP BY Date )
这将起作用。
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`
假设您有一个支持窗口函数的数据库,并且该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
值的行。
Select MAX(ID),Data,Total from foo
对于 MySQL
大概
SELECT * FROM your_table ORDER BY ID DESC LIMIT 1
另一种简单的方法是
SELECT TOP 1 * FROM YourTable ORDER BY ID DESC
而且,我认为这是最简单的方法!
SELECT * FROM TABLE_SUM S WHERE S.ID =
(
SELECT MAX(ID) FROM TABLE_SUM
WHERE CDATE = GG.CDATE
GROUP BY CDATE
)