使用两列组合从mySQL表中删除重复项?

时间:2010-12-06 02:22:22

标签: mysql

我的情况是我有一个看起来像这样的表:

Tx1   TX2   Val
SP1   SP1   1
SP1   SP2   0.56
SP1   SP3   0.78
SP2   SP1   0.56
SP2   SP2   1
SP2   SP3   0.47
SP3   SP1   0.78
SP3   SP2   0.47
SP3   SP3   1

我希望mySQL使用cols 1和2(Tx1& 2)的所有组合对重复项进行排序。这样我得到了:

Tx1   TX2   Val
SP1   SP1   1
SP1   SP2   0.56
SP1   SP3   0.78
SP2   SP2   1
SP2   SP3   0.47
SP3   SP3   1

有人可以建议一个可以执行此操作的查询吗?

谢谢, 戴夫。

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

DELETE FROM tablename
WHERE id IN (
  SELECT id FROM tablename
  GROUP BY CONCAT(Tx1,":",Tx2)
  HAVING COUNT(*) > 1
)

我相信这只会删除第一个副本。因此,如果您有三次重复(等),则必须再次运行查询。