我有一张用于聊天的桌子。其中有一个名为userid的字段和一个名为timesent的字段。我需要知道表中每个用户ID的最新时间表,这样如果他们在3分钟内没有说任何话,我可以从表中删除它们,在这种情况下我会假设它们已经消失了。
我无法真正破解这个坚果......我如何查询。
我当然可以拆分它,首先选择所有的用户ID,然后循环遍历它们并在我的方法中选择前1个时间点,但我想知道单独的sql是否可以做到这一点,所以我不需要执行大量的查询。
答案 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()))