我的桌子:
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。 结果应具有
一次,每个CustIDPrio 1 。最新的EventDate
Prio 2 。最大的EventID
结果如下:
CustID EventDate EventID
12 01.01.2019 1001
10 02.01.2019 1002
11 03.01.2019 1004
我不想使用宏。
sql语句在访问中的外观如何? 先感谢您。
答案 0 :(得分:1)
假设最新日期和最大事件ID始终在同一记录中,请考虑:
查询1:
SELECT Table1.CustID, Max([EventDate] & [eventID]) AS ID
FROM Table1
GROUP BY Table1.CustID;
Query2:
DELETE FROM Table1 WHERE Not CustID & EventDate & EventID IN (SELECT CustID & ID
FROM Query1);
答案 1 :(得分:1)
您可以使用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))
)
答案 2 :(得分:0)
这将为您提供帮助:
Select distinct * into #tmpl From MY_TABLE
Delete from MY_TABLE
Insert into MY_TABLE
Select * from #tmpl
Drop table #tmpl
在创建临时表时如果抛出错误,则创建另一个真实表并执行相同的操作。