我有这样的数据:
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之间,我只想要一条记录。
答案 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 250
到chennai kolkata 250
。第四个条件还要求,任意地,第一个城市按字典顺序小于第二个城市,以便将记录作为删除目标。因此,幸存的记录将为kolkata chennai 250
,因为kolkata
大于chennai
。