为每个用户标识MS Sql Server选择最新的日期时间

时间:2011-05-01 11:14:16

标签: sql-server select

我有一张用于聊天的桌子。其中有一个名为userid的字段和一个名为timesent的字段。我需要知道表中每个用户ID的最新时间表,这样如果他们在3分钟内没有说任何话,我可以从表中删除它们,在这种情况下我会假设它们已经消失了。

我无法真正破解这个坚果......我如何查询。

我当然可以拆分它,首先选择所有的用户ID,然后循环遍历它们并在我的方法中选择前1个时间点,但我想知道单独的sql是否可以做到这一点,所以我不需要执行大量的查询。

1 个答案:

答案 0 :(得分:4)

要获得timesent的最新userid,您可以使用MAX

SELECT userid, MAX(timesent) AS timesent
FROM your_table
GROUP BY userid

或者要执行指定的delete,您可以使用

DELETE your_table 
FROM   your_table y1 
WHERE  NOT EXISTS(SELECT * 
                  FROM   your_table y2 
                  WHERE  y2.userid = y1.userid 
                         AND y2.timesent >= DATEADD(MINUTE, -3, GETDATE()))