我有以下字段查詢最新的記錄包括ID
ID,日期,用戶
現在我想回到與每個用戶的最新日期的條目的ID的表。
我有,我查詢每個用戶的最新日期,然後根據日期和用戶獲得ID的解決方案。
但我想直接獲得ID在一個查詢,因爲我覺得它的錯誤有一個連接查詢確定根據日期和用戶的ID。 它不是打敗了整個ID的概念?如果我有兩個人在同一時間編輯同一用戶,該怎麼辦?
任何人知道如何做到這一點?
我有以下字段查詢最新的記錄包括ID
ID,日期,用戶
現在我想回到與每個用戶的最新日期的條目的ID的表。
我有,我查詢每個用戶的最新日期,然後根據日期和用戶獲得ID的解決方案。
但我想直接獲得ID在一個查詢,因爲我覺得它的錯誤有一個連接查詢確定根據日期和用戶的ID。 它不是打敗了整個ID的概念?如果我有兩個人在同一時間編輯同一用戶,該怎麼辦?
任何人知道如何做到這一點?
你在哪裏使用這些信息?在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併爲每個用戶的最近一次入境日期?
這將是沿着線的東西:
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的整個概念?
的ID(PK)是唯一標識的記錄。不能保證只有一條記錄與給定的用戶和日期相匹配(因爲多個條目可能對同一用戶具有相同的日期)。您可能對用戶/日期有一個唯一的約束來避免這種情況,但在這種情況下,您不需要該用戶ID和日期就足以唯一標識該記錄。因此,請在這裏重新考慮您對ID列的需求。
爲什麼你需要這些ID?表格是否有更多列?那裏是否存在具有相同「用戶」和相同「日期」的行? –
使用比MS Access更先進的數據庫的好處之一是能夠使用'RANK'和'PARTITION',這使得這樣的查詢變得微不足道。 – RedFilter