Mysql - 如何消除重复多个列的行(不重复)

时间:2016-03-10 17:02:32

标签: mysql duplicates rows

我需要使用查询删除表中的一些行,其中4列都是相同的。例如,在表people中:

+----+------+-----+--------+
| id | name | age | weight |
+----+------+-----+--------+
|  1 | luis |  24 |     52 |
|  2 | luis |  24 |     75 |
|  3 | luis |  24 |     64 |
|  4 | ali  |  32 |     50 |
+----+------+-----+--------+

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

我试过了:

从人群中删除 其中id不在(选择min(id))                   来自人民                   按名称分组,年龄 )

但是这给了我这个错误:

您无法指定目标表格'翻译'用于FROM子句中的更新

我正在使用Mysql数据库

1 个答案:

答案 0 :(得分:0)

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子句中。

此致