1

我有以下列的表格:

id,name,attribute_id,params_desc

表中的数据如下所示:

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

我需要的是删除具有相同nameattribute_id.

我无法在这里找到一些可行的解决方案,DISTINCT无论UNIQUE INDEX是否INSERT IGNORE适合我。

谢谢你的时间。

4

3 回答 3

1
ALTER IGNORE TABLE tableName
ADD CONSTRAINT SomeName UNIQUE (name ,attribute_id)
于 2013-11-06T17:07:01.230 回答
1
DELETE 
FROM tbl 
WHERE id IN (
SELECT id from tbl 
GROUP BY name,attribute_id 
HAVING COUNT(*)>2
)
于 2013-11-06T17:07:33.680 回答
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
于 2013-11-06T17:15:15.963 回答