我有这样的波纹管一个
SurveyID(uniqueidentifier) PKey,UserID(uniqueidentifier),Time(DateTime)
我可以有重复的用户名和时间的表是作为当前时间,当我们插入一条记录到桌上。
我必须为每个用户选择最后插入的记录。
我所有的查询都失败了。对此有何帮助?
感谢 楚楚
我有这样的波纹管一个
SurveyID(uniqueidentifier) PKey,UserID(uniqueidentifier),Time(DateTime)
我可以有重复的用户名和时间的表是作为当前时间,当我们插入一条记录到桌上。
我必须为每个用户选择最后插入的记录。
我所有的查询都失败了。对此有何帮助?
感谢 楚楚
SELECT u1.*
FROM Users u1
WHERE NOT EXISTS
(SELECT *
FROM Users u2
WHERE u1.ID = u2.ID AND u2.Date > u1.Date)
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仅仅是我自己有时使用的命名规则。
select * from
(
select *, row_number() over(partition by userid order by time desc) as sno from users
) as t
where sno=1
嘿,这对我有用。谢谢 – Tutu 2010-11-12 12:25:30
SELECT * FROM 用户 WHERE时间
(SELECT MAX(时间) 来自用户的 GROUP BY的用户ID)
HI我可以在同一个表中的多个用户。我需要为每个用户获取最后插入的记录。以前的查询不起作用。 – Tutu 2010-11-12 11:51:08
我编辑了帖子,我错过了ID部分 – 2010-11-12 11:53:30