我继承了一个结构如下的表:
ID Name Timestamp Data
----------------------------
1 A 40 ...
2 A 30 ...
3 A 20 ...
4 B 40 ...
5 B 20 ...
6 C 30 ...
7 C 20 ...
8 C 10 ...
Run Code Online (Sandbox Code Playgroud)
ID是一个标识字段和主键,在Name和Timestamp字段上有非唯一索引.
什么是最有效的方式来获取最新的每个项目名称记录,即在上述行的表1,4和6,因为它们是项目中最先进的日期项应返回一个,乙和Ç分别.
Mit*_*eat 16
SQL Server 2005(以后):
WITH MostRecentRows AS
(
SELECT ID, Name, Data,
ROW_NUMBER() OVER (PARTITION BY Name ORDER BY TimeStamp DESC) AS 'RowNumber'
FROM MySchema.MyTable
)
SELECT * FROM MostRecentRows
WHERE RowNumber = 1
Run Code Online (Sandbox Code Playgroud)
假设每个名称没有重复的时间戳,这样的事情应该有效:
SELECT ID, Name, Timestamp, Data
FROM test AS o
WHERE o.Timestamp = (SELECT MAX(Timestamp)
FROM test as i
WHERE i.name = o.name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7316 次 |
| 最近记录: |