Sql 如何基于多个条件删除重复项?

Sql 如何基于多个条件删除重复项?,sql,duplicates,foxpro,Sql,Duplicates,Foxpro,我有一个包含4列的表:customerid、purchasedate、purchasenumber和operationid。此表作为另一个查询的结果返回 我想消除任何重复的客户,除了有最近日期的客户 例如:如果我有4个条目具有不同的PurchaseDate,但操作ID和customerid相同,那么我希望保留最新的条目 DELETE FROM YourTable ; WHERE PurchaseDate < ; (SELECT MAX(PurchaseDate) ;

我有一个包含4列的表:customerid、purchasedate、purchasenumber和operationid。此表作为另一个查询的结果返回

我想消除任何重复的客户,除了有最近日期的客户

例如:如果我有4个条目具有不同的PurchaseDate,但操作ID和customerid相同,那么我希望保留最新的条目

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