MySQL删除具有两个相同列的重复行

时间:2013-11-06 17:04:59

标签: mysql

我有以下列的表格:

id,name,attribute_id,params_desc

表格中的数据如下所示:

0,'some',1,'something'
1,'some',2,'somethingelse'
2,'some',3,'somethingelses'
3,'some',1,'something'

我需要删除的重复项具有相同的nameattribute_id

我无法在此处找到一些有效的解决方案,因为DISTINCTUNIQUE INDEXINSERT IGNORE对我不起作用。

你的时间。

3 个答案:

答案 0 :(得分:1)

ALTER IGNORE TABLE tableName
ADD CONSTRAINT SomeName UNIQUE (name ,attribute_id)

答案 1 :(得分:1)

DELETE 
FROM tbl 
WHERE id IN (
SELECT id from tbl 
GROUP BY name,attribute_id 
HAVING COUNT(*)>2
)

答案 2 :(得分:0)

道歉,因为我不确定MySQL中的语法与SQLServer中的语法相同 - 不过谷歌的快速建议可能是这样,否则这可能会指向正确的方向:

DELETE a FROM 
(
    SELECT id
            ,name
            ,attribute_id
            ,params_desc
            ,row = ROW_NUMBER() OVER (PARTITION BY name, attribute_id ORDER BY id ASC)
    FROM Table
) a
WHERE row > 1