从值不同的表中删除重复项

时间:2017-11-13 07:34:02

标签: mysql

我有这样的数据:

city1     | city2       | distance    
----------+-------------+----------    
kolkata   | chennai     | 250  
delhi     | mumbai      | 150  
delhi     | kolkata     | 200  
chennai   | bangalore   | 100  
chennai   | kolkata     | 250  
mumbai    | bangalore   | 150  
mumbai    | delhi       | 150 

我只想要记录同一城市之间相同距离的唯一记录。

例如,在kolkata-chennai和chennai-kolkata之间,我只想要一条记录。

1 个答案:

答案 0 :(得分:2)

尝试自我加入删除:

DELETE a
FROM yourTable a 
INNER JOIN yourTable b
    ON a.city1 = b.city2 AND
       a.city2 = b.city1 AND
       a.distance = b.distance AND
       a.city1 < a.city2;

ON子句的前三个条件将映射,例如kolkata chennai 250chennai kolkata 250。第四个条件还要求,任意地,第一个城市按字典顺序小于第二个城市,以便将记录作为删除目标。因此,幸存的记录将为kolkata chennai 250,因为kolkata大于chennai