1

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

ID、日期、用户

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

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

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

有谁知道该怎么做?

4

5 回答 5

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
于 2012-09-05T15:12:58.013 回答
0

您在哪里使用这些信息?将@@identity 与MS Access 一起使用是有效的。

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)
于 2012-09-05T15:00:50.207 回答
0

您的 ID 是连续的并在增加吗?

如果是这样的话

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

否则,加入没有错。

于 2012-09-05T15:01:16.523 回答
0

部分答案:

它不是打败了 ID 的整个概念吗?

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

于 2012-09-05T15:32:07.817 回答
-1

所以你想获取每个用户最近一次进入的 ID 和日期?

那将是这样的:

SELECT `ID`, `date`, `user`
FROM `table`
ORDER BY `date` DESC
GROUP BY `user`
于 2012-09-05T15:02:01.360 回答