删除重复项(相同行)

时间:2015-09-08 08:03:33

标签: sql

我有一个包含两列ab的表格。

我可以拥有以下数据:

a  | b  
1  | 1  
1  | 3 
1  | 3   
2  | 2   
2  | 3   
2  | 2
2  | 2

在我的示例中,a=2,b=2a=1,b=3是重复的。

如何从表格中删除所有这些副本?

2 个答案:

答案 0 :(得分:4)

仅限展示使用DISTINCT

SELECT DISTINCT *
FROM your_table

从旧表中删除(侵入式方式),但我想你上面没有任何外键。的(MySQL的)

CREATE TABLE new_table AS
SELECT DISTINCT * FROM old_table;

DROP TABLE old_table;

RENAME TABLE new_table TO old_table;

更通用的方法(无需删除原始表格):

CREATE TABLE old_table_clone(...);

INSERT INTO old_table_clone(...)
SELECT DISTINCT * FROM old_table;

TRUNCATE TABLE old_table;

INSERT INTO old_table(...)
SELECT * FROM old_table_clone;

DROP TABLE old_table_clone;

使用临时表可以实现同样的效果,具体取决于您使用的RDBMS TSQL / SQL Server

SELECT DISTINCT * INTO #temp FROM old_table;

TRUNCATE TABLE old_table;

INSERT INTO old_table(...)
SELECT * FROM #temp;

答案 1 :(得分:0)

检查: Delete duplicate records using rownum in sql

如果您的数据库中没有rowid,请添加唯一ID