[英]How to delete all records in an access table except most recent
我有一張像這樣的桌子:
name - log - date - dataFields john - 2 - 21/03/2014 - 123 john - 2 - 22/03/2014 - 345 john - 2 - 23/03/2014 - 234 karl - 2 - 20/03/2014 - 789 liam - 1 - 20/03/2014 - 135 liam - 2 - 21/03/2014 - 321 mick - 1 - 20/03/2014 - 987 mick - 1 - 21/03/2014 - 123 mick - 2 - 22/03/2014 - 456 mick - 3 - 20/03/2014 - 789 mick - 3 - 24/03/2014 - 456
我想刪除除最新名稱/日志組合以外的所有記錄。 所以在這個例子中
john - 2 - 23/03/2014 - 234 karl - 2 - 20/03/2014 - 789 liam - 1 - 20/03/2014 - 135 liam - 2 - 21/03/2014 - 321 mick - 1 - 21/03/2014 - 123 mick - 2 - 22/03/2014 - 456 mick - 3 - 24/03/2014 - 456
我嘗試使用子查詢來選擇要保留的記錄。 然后使用不存在選擇我要刪除的記錄,但是它不選擇任何記錄。 我可以用不存在這種方式嗎?
不會:
Delete from [TableName] as T1
Where Exists(
SELECT [log],[name],Max([date]) FROM [TableName]
Where [log] = T1.[log]
And [name] = T1.[name]
Group By [log],[name]
Having T1.[date] < Max([date]))
絕招?
謝謝亞歷山大,但是創建表沒有用。 因此,我要做的是創建一個子查詢,該子查詢返回每個名稱/日志組的max(date)。 然后在另一個查詢中使用該子查詢,該查詢在原始表的名稱/日志/日期上具有左連接。 並且只需從名稱為null的原始表中刪除記錄(即在子查詢中找不到具有相同名稱/日志/日期的匹配記錄,因為那里有更高的記錄)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.