查询每个用户的最新记录包括id

时间:2012-09-05 14:58:48

标签: sql ms-access

我有一个包含以下字段的表

ID,日期,用户

现在我想返回每个用户最新日期的条目ID。

我有一个解决方案,我查询每个用户的最新日期,然后根据日期和用户获取ID。

但我想直接在一个查询中获取ID,因为我认为让JOIN查询根据日期和用户识别ID是错误的。 它不会打败ID的整个概念吗?如果我有2个人在同一秒内编辑同一个用户怎么办?

任何人都知道如何做到这一点?

5 个答案:

答案 0 :(得分:1)

尝试这个,它使用子查询来获取每个用户的最新日期。

SELECT *
FROM tableNAme a INNER JOIN
    (
    SELECT  user, MAX(date) maxDate
    FROM    tableName
    GROUP BY user
    ) b ON a.user = b.user AND
            a.date = b.maxDate

答案 1 :(得分:0)

您在哪里使用此信息?在MS Access中使用@@ identity是有效的。

Dim db As Database
Set db = CurrentDb

db.Execute "INSERT INTO Table2 (test) Values('abc')", dbFailOnError

Dim rs As DAO.Recordset

Set rs = db.OpenRecordset("select @@identity")
Debug.Print rs(0)

答案 2 :(得分:0)

你的身份证是否连续增加?

如果是的话

SELECT User, Max(ID), Max(date)
FROM table
GROUP BY user

否则,加入没有任何问题。

答案 3 :(得分:0)

部分答案:

  

它不会破坏ID的整个概念吗?

ID(PK)用于唯一标识记录。不能保证只有一条记录与给定的用户和日期相匹配(因为同一用户的多个条目可能具有相同的日期)。您可能对用户/日期有唯一的约束以避免这种情况,但在这种情况下,您不需要ID作为用户,并且日期足以唯一地标识记录。因此,请在此重新考虑您对ID列的需求。

答案 4 :(得分:-1)

所以你想获得每个用户最新条目的ID和日期吗?

这将是:

SELECT `ID`, `date`, `user`
FROM `table`
ORDER BY `date` DESC
GROUP BY `user`