【发布时间】:2016-06-16 15:18:21
【问题描述】:
我想根据一个列值选择不同的记录组,然后按日期时间对它们进行排序。
例如,我有这张数据表
+----+---------+-------+---------------------------+
| id | Name | Index | DateTime |
+----+---------+-------+---------------------------+
| 3 | Index | 1 | 2016-03-03 12:03:15.353 |
| 4 | Index | 1 | 2016-03-01 12:03:15.353 |
| 5 | Middle | 2 | 2016-03-03 12:03:15.353 |
| 6 | Little | 3 | 2016-03-03 12:03:15.353 |
| 7 | Thumb | 4 | 2016-03-03 12:03:15.353 |
| 8 | Thumb | 4 | 2016-03-01 12:03:15.353 |
+----+---------+-----------------------------------+
我想得到这样的结果:
+----+---------+-------+---------------------------+
| id | Name | Index | DateTime |
+----+---------+-------+---------------------------+
| 3 | Index | 1 | 2016-03-03 12:03:15.353 |
| 5 | Middle | 2 | 2016-03-03 12:03:15.353 |
| 6 | Little | 3 | 2016-03-03 12:03:15.353 |
| 7 | Thumb | 4 | 2016-03-03 12:03:15.353 |
+----+---------+-----------------------------------+
+----+---------+-------+---------------------------+
| id | Name | Index | DateTime |
+----+---------+-------+---------------------------+
| 4 | Index | 1 | 2016-03-01 12:03:15.353 |
| 8 | Thumb | 4 | 2016-03-01 12:03:15.353 |
+----+---------+-----------------------------------+
考虑一个指纹系统,该系统保存所有指纹,并且在重新注册同一手指时不会覆盖,如果手指重新注册多次,我想检索最新注册的手指以及它们的历史记录。
我尝试了这个根据索引返回不同记录的查询:
SELECT a.*
FROM Fingerprint a
INNER JOIN
(SELECT DISTINCT [Index], MIN(Id) as id
FROM Fingerprint
GROUP BY [Index]) AS b
ON a.[Index] = b.[Index]
AND a.id = b.id
WHERE [RefNumber] = '00000'
ORDER BY [LastUpdatedOn] DESC
我怎样才能实现这个是 sql 查询?
我在这里发现了一个类似的问题: Get Distinct rows according to one column and order by date
使用 LINQ 检索没有历史记录的不同记录。
【问题讨论】:
标签: sql sql-server tsql select