我想创建一个用于删除重复行的 Access SQL 查询。
我的桌子:
CustID EventDate EventID
12 01.01.2019 1001
10 02.01.2019 1002
11 03.01.2019 1003
10 01.01.2019 1001
11 03.01.2019 1004
表没有主键。 我想删除每个重复的 CustID。 结果应该有一次每个 CustID 与
Prio 1. 最近的事件日期
Prio 2. 最大的事件ID
结果如下所示:
CustID EventDate EventID
12 01.01.2019 1001
10 02.01.2019 1002
11 03.01.2019 1004
我不想使用宏。
sql 语句在 Access 中的外观如何? 提前谢谢你。
假设最近的日期和最大的事件 ID 将始终位于同一记录中,请考虑:
查询 1:
SELECT Table1.CustID, Max([EventDate] & [eventID]) AS ID
FROM Table1
GROUP BY Table1.CustID;
查询2:
DELETE FROM Table1 WHERE Not CustID & EventDate & EventID IN (SELECT CustID & ID
FROM Query1);
您可以使用 EXISTS 应用删除条件:
DELETE FROM tablename AS t
WHERE EXISTS (
SELECT 1 FROM tablename
WHERE
CustID = t.CustID
AND
(EventDate > t.EventDate OR (EventDate = t.EventDate AND EventID > t.EventID))
)
这将帮助您:
Select distinct * into #tmpl From MY_TABLE
Delete from MY_TABLE
Insert into MY_TABLE
Select * from #tmpl
Drop table #tmpl
在创建临时表时,如果抛出错误,则创建另一个真实表并执行相同的操作。