簡體   English   中英

如何刪除訪問表中除最近記錄以外的所有記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM