我有一个叫做 info 的表,它的数据是这样的,
+----------+-------------------------+------+
| FKUserID | CompletedTime | Type |
+----------+-------------------------+------+
| 1 | 2021-03-10 12:56:00.423 | 5 |
+----------+-------------------------+------+
| 245 | 2021-03-10 12:46:46.977 | 5 |
+----------+-------------------------+------+
| 1 | 2021-03-10 12:44:53.683 | 5 |
+----------+-------------------------+------+
| 1 | 2021-03-10 12:40:54.733 | 5 |
+----------+-------------------------+------+
| 1 | 2021-03-10 12:35:26.307 | 5 |
+----------+-------------------------+------+
| 245 | 2021-03-10 11:11:33.887 | 5 |
+----------+-------------------------+------+
| 245 | 2021-03-10 10:18:11.403 | 5 |
+----------+-------------------------+------+
我需要获取不同的用户 ID 数据,以及他们的 CompletedTime
列的最长完成时间
预期输出是,
+----------+-------------------------+------+
| FKUserID | CompletedTime | Type |
+----------+-------------------------+------+
| 1 | 2021-03-10 12:56:00.423 | 5 |
+----------+-------------------------+------+
| 245 | 2021-03-10 12:46:46.977 | 5 |
+----------+-------------------------+------+
更新:抱歉,我也需要做这个 Linq 查询
答案 0 :(得分:0)
对于此类问题,我更喜欢将 ROW_NUMBER
与 TOP 1 WITH TIES
一起使用:
SELECT TOP 1 WITH TIES *
FROM info
ORDER BY ROW_NUMBER() OVER (PARTITION BY FKUserID ORDER BY CompletedTime DESC);
答案 1 :(得分:0)
这是您需要的:
https://www.w3schools.com/sql/sql_groupby.asp
按用户 ID 分组并在 CompletedTime 上使用 Max()
,您将获得结果。
你的 SQL 看起来像
SELECT `FKUserID`, MAX(`CompletedTime`) from `TableName` GROUP BY `FKUserID`;