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

标签 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 使用列 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

任何人都可以建议执行此操作的查询吗?

谢谢, 戴夫。

最佳答案

像这样的东西应该可以工作:

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

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

关于mysql - 使用两列组合从 mySQL 表中删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362658/

相关文章:

sql - 子查询中的 MySQL 交集

php - 如何纠正 "SQLSTATE[42000]: Syntax error or access violation: 1064 "错误

php - PDO 准备失败

Mysql MATCH AGAINST 短单词

mysql - 获取 SQL 查询中排序依据的位置

mysql - 对结果表进行 SQL 查询

php - fetch_array 到 PDO

PHP/MySQL 小规模模糊搜索

MYSQL工作台无法连接

mysql - 如何使用magento更新查询添加到表列中的现有值?