我有以下列的表格:
id,name,attribute_id,params_desc
表格中的数据如下所示:
0,'some',1,'something'
1,'some',2,'somethingelse'
2,'some',3,'somethingelses'
3,'some',1,'something'
我需要删除的重复项具有相同的name
和attribute_id
。
我无法在此处找到一些有效的解决方案,因为DISTINCT
或UNIQUE INDEX
或INSERT IGNORE
对我不起作用。
你的时间。
答案 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