我有一个包含两列a
和b
的表格。
我可以拥有以下数据:
a | b
1 | 1
1 | 3
1 | 3
2 | 2
2 | 3
2 | 2
2 | 2
在我的示例中,a=2,b=2
和a=1,b=3
是重复的。
如何从表格中删除所有这些副本?
答案 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