我对数据库查询知之甚少。例如,我有一个这样的表。
id | timestamp | lat | lon
------------------------------
1 | 2016-04-06|-27.438|153.076
1 | 2016-04-03|-27.346|152.456
1 | 2016-04-04|-23.678|155.789
2 | 2016-04-04|-27.438|178.076
3 | 2016-04-04|-26.438|167.076
2 | 2016-04-05|-24.438|123.076
我用过:
SELECT * FROM table order by [Timestamp]DESC
按DESC
顺序返回所有数据。但我需要从mssql查询中获取每个timestamp
的最大id
行。例如:
id | timestamp | lat | lon
--------------------------------
1 | 2016-04-06|-27.438|153.076
2 | 2016-04-05|-24.438|123.076
3 | 2016-04-04|-26.438|167.076
答案 0 :(得分:4)
使用ROW_NUMBER
:
SELECT
id, timestamp, lat, lon
FROM (
SELECT *,
rn = ROW_NUMBER() OVER(PARTITION BY id ORDER BY timestamp DESC)
FROM yourTable
) t
WHERE rn = 1
答案 1 :(得分:2)
使用row_number()
按ID
SELECT *
FROM
(
SELECT *, R = ROW_NUMBER() OVER (PARTITION BY id ORDER BY timestamp DESC)
FROM yourtable
) D
WHERE R = 1