【问题标题】:Delete Duplicate rows while grouping another one在对另一行进行分组时删除重复行
【发布时间】:2016-10-26 19:50:04
【问题描述】:

我在这里遇到了一个我无法用谷歌解决的问题。我得到了带有行号和参数的表。现在我想为每个数字删除具有相同参数的重复行:

Number    Parameter  id
3         22         1
3         22         2
2         32         3
1         44         4
2         12         5
4         22         6
1         44         7
2         12         8
2         36         9

Number    Parameter  id
3         22         1
2         32         3
1         44         4
2         12         5
4         22         6
2         36         9

我试过了

DELETE n1 FROM a n1,a n2 WHERE n1.parameter = n2.parameter AND n1.id > n2.id AND n1.id <> n2.id

但这会删除具有重复参数的每一行,以便只保留一个。我需要以某种方式按数字添加组。我想,但我不知道怎么做。

编辑:哦,我错过了添加 ID 行。当然,每一行都有一个 ID 行,我现在将添加它。

EDIT2:来自 10086 的回答有效!

【问题讨论】:

  • 只要重复的行完全一样,甚至没有一列有不同的值,那么我认为删除一个是不可能的。相反,你为什么不使用 distinct 呢?从表中选择不同的数字、参数;
  • 作为 andre_northwind sais,不可能删除完全相同的行。您至少需要一个额外的列。你能改变表的架构吗?

标签: mysql


【解决方案1】:

尝试关注;)

DELETE t1
FROM a t1
INNER JOIN a t2
ON t1.id > t2.id
AND t1.Parameter = t2.Parameter
AND t1.Number = t2.Number;

SQLFiddle DEMO HERE

它将保留具有最低 id 值的行。

【讨论】:

  • @Baldry 已更新,请重试。并在那里查看 SQLFiddle 演示。
  • 像魅力一样工作非常感谢!我必须更多地研究数据才能确定,但​​这似乎是正确的。
猜你喜欢
  • 2023-03-08
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多