如何从MYSQL中的2个确切行中删除1行?

时间:2013-11-22 16:31:12

标签: mysql sql

互联网上的其他答案不是很清楚,所以我再次提出这个问题。

同样,我有一张桌子tb1

ID
114035
114035

如何删除1行&保持其他?

结果应为

ID
114035

3 个答案:

答案 0 :(得分:3)

如果您不关心删除哪一个:

DELETE FROM tb1 WHERE ID = 114035 LIMIT 1;

否则找出要保留的内容与WHERE子句中使用的内容区别开来。

答案 1 :(得分:1)

尝试

ALTER IGNORE TABLE tb1 ADD UNIQUE INDEX idx_name (ID);

<小时/> 使用UNIQUE向列添加ALTER索引,并使用IGNORE关键字
这将删除重复的条目,并且将来也不会删除duplicate条目。
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
OP的评论

后更新

删除Unique约束

DROP INDEX idx_name ON tb1

ALTER TABLE tb1 DROP INDEX idx_name 

答案 2 :(得分:0)

考虑使用临时表来存储您不想删除的行。

CREATE TEMPORARY TABLE tmp ( id INT );

INSERT INTO tmp ( id )
SELECT id
FROM tbl
GROUP BY id
HAVING COUNT(1) > 1;

然后删除您认为重复的所有行。

DELETE FROM tbl
WHERE EXISTS(
    SELECT 1
    FROM tmp 
    WHERE tmp.id = tbl.id
);

最后用以前的临时表中存储的行'替换'。

INSERT INTO tbl ( id )
SELECT id
FROM tmp;