【问题标题】:Mysql - How to eliminate rows with several colums repeated (not duplicated)Mysql - 如何消除重复数列的行(不重复)
【发布时间】:2016-06-25 16:01:29
【问题描述】:

我需要通过查询从一个表中删除一些行,其中 4 列是相同的。比如表中people

+----+------+-----+--------+ |编号 |姓名 |年龄 |重量 | +----+------+-----+--------+ | 1 |路易斯 | 24 | 52 | | 2 |路易斯 | 24 | 75 | | 3 |路易斯 | 24 | 64 | | 4 |阿里 | 32 | 50 | +----+------+-----+--------+

我需要从表中删除一个名为“luis”、年龄为“24”的人。我找到了几种删除重复项的解决方案,但在这种情况下,luis 24 出现了 3 次,我只想在表中保留 1。一个同名同龄的人。

我试过了:

从人中删除 其中 id 不在(选择 min(id) 从人 按姓名、年龄分组 )

但这给了我这个错误:

您不能在 FROM 子句中为更新指定目标表“翻译”

我正在使用 Mysql 数据库

【问题讨论】:

  • 那么您如何决定要保留这三个记录中的哪一个?

标签: mysql duplicates rows


【解决方案1】:
DELETE FROM people
    WHERE people.id NOT IN (SELECT * 
       FROM (SELECT MIN(people.id)
           FROM people
           GROUP BY people.name, people.age) people)

这将删除姓名和年龄的多个重复项,留下 ID 较低的记录。

您可以在 GROUP BY 子句中添加其他列。

问候

【讨论】:

  • 您还可以选择其他记录选择标准,例如:MAX(people.weight) 或 MIN(people.age)。顺便说一句,投票答案。谢谢:)
  • @Nova,如果您能投票或接受答案,那就太好了。 :)
  • 好的!,我接受了答案,但我只有 15 点声望才能投票,而我只有 1 点!再次感谢,
  • 接受就OK了!甚至比投票更好。只有提问者才能接受。谢谢
猜你喜欢
  • 2015-05-25
  • 2014-06-01
  • 2023-04-02
  • 2019-04-21
  • 1970-01-01
  • 2017-01-05
  • 2012-07-27
  • 2018-03-21
  • 2020-07-13
相关资源
最近更新 更多