HI Guys
我有一张像下面这样的表
SurveyID(uniqueidentifier) PKey,UserID(uniqueidentifier),Time(DateTime)
我可以为UserID复制,Time是当我们向表中插入记录时的当前时间。
我必须为每个用户选择最后插入的recrod。
我的所有查询都失败了。对此有何帮助?
由于 图图
答案 0 :(得分:1)
SELECT u1.*
FROM Users u1
WHERE NOT EXISTS
(SELECT *
FROM Users u2
WHERE u1.ID = u2.ID AND u2.Date > u1.Date)
答案 1 :(得分:0)
WITH rows AS (
SELECT
ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY [Time] DESC) AS __ROW,
SurveyID,
PKey,
UserID
FROM yourTable
)
SELECT SurveyID, PKey, UserID
FROM rows
WHERE __ROW = 1;
这适用于Oracle和SQL Server。关于MySQL或Postgres不确定。它在Access中不起作用。双下划线__ROW只是我有时会使用的命名约定。
答案 2 :(得分:0)
select * from
(
select *, row_number() over(partition by userid order by time desc) as sno from users
) as t
where sno=1
答案 3 :(得分:0)
SELECT * 来自用户 在哪里时间IN (SELECT max(时间) 来自用户 GROUP BY USERID)