3

可能重复:
如何从 mysql 中的表中删除重复的行

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

我有一个表 'MyTableA' 有两列 ID(int) 和 Value(varchar(100))

该表有一些值,如下所示:

ID|值
1|苹果
2|苹果
3|苹果

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

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

谢谢!

4

2 回答 2

5

尝试...

DELETE t FROM `dbtable` t
  JOIN `dbtable` t2 ON t.`Value` = t2.`Value`
WHERE t.`ID` > t2.`ID`
于 2012-11-17T19:23:11.507 回答
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
于 2012-11-17T21:46:13.847 回答