我有一个简单的请求,这正成为一场噩梦。
我有一个表'MyTableA',其中包含两列ID(int)和Value(varchar(100))
该表有一些像这样的值:
ID|Value 1|Apple 2|Apple 3|Apple
如果值是重复的,我想保留第一个ID行并删除其余行。所以在上面的例子中,我想删除ID为2和3的行。
我认为这很简单,但可能是因为我正在使用带有子句的SQL。
谢谢!
答案 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