我有一个包含以下字段的表
ID,日期,用户
现在我想返回每个用户最新日期的条目ID。
我有一个解决方案,我查询每个用户的最新日期,然后根据日期和用户获取ID。
但我想直接在一个查询中获取ID,因为我认为让JOIN查询根据日期和用户识别ID是错误的。 它不会打败ID的整个概念吗?如果我有2个人在同一秒内编辑同一个用户怎么办?
任何人都知道如何做到这一点?
答案 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`