MySQL - 从列复制的表中删除行

时间:2012-11-17 19:15:42

标签: mysql sql duplicates

  

可能重复:
  how to delete duplicate rows from a table in mysql

我有一个简单的请求,这正成为一场噩梦。

我有一个表'MyTableA',其中包含两列ID(int)和Value(varchar(100))

该表有一些像这样的值:

ID|Value
1|Apple
2|Apple
3|Apple

如果值是重复的,我想保留第一个ID行并删除其余行。所以在上面的例子中,我想删除ID为2和3的行。

我认为这很简单,但可能是因为我正在使用带有子句的SQL。

谢谢!

2 个答案:

答案 0 :(得分:5)

...试

DELETE t FROM `dbtable` t
  JOIN `dbtable` t2 ON t.`Value` = t2.`Value`
WHERE t.`ID` > t2.`ID`

答案 1 :(得分:0)

您可以通过使用子查询加入表来删除它(子查询获取每个值的最小ID

DELETE a FROM tableName a
        LEFT JOIN
        (
          SELECT Value, MIN(ID) minID
          FROM tableName
          GROUP BY Value
        ) b ON a.ID = b.minID
WHERE  b.minID IS NULL