Sql 如何基于多个条件删除重复项?
我有一个包含4列的表:customerid、purchasedate、purchasenumber和operationid。此表作为另一个查询的结果返回 我想消除任何重复的客户,除了有最近日期的客户 例如:如果我有4个条目具有不同的PurchaseDate,但操作ID和customerid相同,那么我希望保留最新的条目Sql 如何基于多个条件删除重复项?,sql,duplicates,foxpro,Sql,Duplicates,Foxpro,我有一个包含4列的表:customerid、purchasedate、purchasenumber和operationid。此表作为另一个查询的结果返回 我想消除任何重复的客户,除了有最近日期的客户 例如:如果我有4个条目具有不同的PurchaseDate,但操作ID和customerid相同,那么我希望保留最新的条目 DELETE FROM YourTable ; WHERE PurchaseDate < ; (SELECT MAX(PurchaseDate) ;
DELETE FROM YourTable ;
WHERE PurchaseDate < ;
(SELECT MAX(PurchaseDate) ;
FROM YourTable YT2 ;
WHERE YT2.CustomerID = YourTable.CustomerID ;
AND YT2.OperationID = YourTable.OperationID)
这应该可以做到,但是如果您在最近的日期有同一customerID和operationID的多条记录,您将保留所有记录
这是未经测试的,因此请确保在尝试之前备份您的数据。如果您感兴趣:这对我很有效:从mytable中选择t1.*作为t1左外连接mytable作为t1上的t2。UserId=t2.UserId和t1.Date