【问题标题】:How to get dictinct userid with order by close如何通过关闭顺序获取不同的用户ID
【发布时间】:2021-06-08 12:20:43
【问题描述】:

我有一个名为 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 查询

【问题讨论】:

  • 这是 SQL 问题还是 Linq 问题?你应该只要求一个。请删除不相关的标签。
  • 您希望Type 列发生什么

标签: sql-server select sql-order-by


【解决方案1】:

对于此类问题,我更喜欢使用ROW_NUMBERTOP 1 WITH TIES

SELECT TOP 1 WITH TIES *
FROM info
ORDER BY ROW_NUMBER() OVER (PARTITION BY FKUserID ORDER BY CompletedTime DESC);

【讨论】:

  • 如何使用 linq 查询编写此内容
【解决方案2】:

这是您需要的: https://www.w3schools.com/sql/sql_groupby.asp 按用户 ID 分组并在 CompletedTime 上使用 Max(),您将获得结果。

您的 SQL 将如下所示

SELECT `FKUserID`, MAX(`CompletedTime`) from `TableName` GROUP BY `FKUserID`;

【讨论】:

  • 如何使用 linq 来做到这一点
猜你喜欢
  • 2019-08-12
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
  • 2017-10-19
相关资源
最近更新 更多