Sql 查询每个用户的最新记录包括id
我有一个包含以下字段的表 ID、日期、用户 现在,我想返回条目的ID以及每个用户的最新日期Sql 查询每个用户的最新记录包括id,sql,ms-access,Sql,Ms Access,我有一个包含以下字段的表 ID、日期、用户 现在,我想返回条目的ID以及每个用户的最新日期 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 我有一个解决方案,我查询每个用户的最新日期,
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
我有一个解决方案,我查询每个用户的最新日期,然后根据日期和用户获取id
但是我想在一个查询中直接获取ID,因为我认为让JOIN查询根据日期和用户标识ID是错误的。
它不是击败了身份的整个概念吗?如果我让两个人在同一秒钟内编辑同一个用户会怎么样
有人知道怎么做吗?你在哪里使用这些信息?将@@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)
您的ID是连续的还是不断增加的 如果是的话
否则,加入就没有问题。那么您想获取每个用户最近输入的ID和日期吗 这大致可以说是:
SELECT `ID`, `date`, `user`
FROM `table`
ORDER BY `date` DESC
GROUP BY `user`
试试这个,它使用子查询来获取每个用户的最新日期
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
部分答案:
它不是击败了身份的整个概念吗
ID(PK)用于唯一标识记录。不能保证只有一条记录与给定的用户和日期匹配(因为同一用户的多个条目可能具有相同的日期)。为了避免这种情况,您可能对user/date有一个唯一的约束,但是在这种情况下,您不需要ID,因为user和date足以唯一地标识记录。因此,请重新考虑您对此处ID列的需要。注意:这仅适用于仅按时间顺序输入日期的情况。@RedFilter Yes,因此答案的第一行。您的第一行没有说明日期,只有ID。也就是说,ID 2的日期可能早于ID 1,在这种情况下,您的查询将失败。我认为这个问题与插入无关。@RedFilter我是这样做的,基于这一行,“它不会破坏ID的整个概念吗?如果我让两个人在同一秒钟内编辑同一个用户怎么办?”我认为OP指的是执行一个查询以获得最大日期,然后再进行另一个查询,根据该查询获取完整的行,同时另一个用户编辑该行,即竞争条件。为什么需要ID?这个表有更多的列吗?是否存在具有相同
用户
和相同日期
的行?使用比MS Access更高级的数据库的优点之一是能够使用排名
和分区
,这使得类似的查询变得微不足道。