在Access SQL查询中删除重复的行

时间:2019-08-16 06:43:19

标签: sql ms-access

我想创建一个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 。最新的EventDate

Prio 2 。最大的EventID

结果如下:

CustID  EventDate   EventID

12  01.01.2019  1001

10  02.01.2019  1002

11  03.01.2019  1004

我不想使用宏。

sql语句在访问中的外观如何? 先感谢您。

3 个答案:

答案 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 

在创建临时表时如果抛出错误,则创建另一个真实表并执行相同的操作。