您有三个字段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)
答案 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`
答案 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
)