如何删除重复记录zt
时间:2006-11-27 来源:boean
在移走任何记录之前,先export可能有问题的表。
第一步:确定什么是重复记录
标识那些整个记录是相同或者在主键字段上是重复的记录。下面的例子中表有3个字段,其中前两个字段为表的主键字段。
pk_column_1 pk_column_2 column_3
----------- ----------- --------
FRED 1234 234
FRED 1234 234
FRED 1234 112 字段pk_column_1和pk_column_2构成表主键,这样表中共有3条记录,但其中前两条记录是重复的。 第二步:解决问题 应该知道为什么会产生重复的记录,应该防止这种事情发生。 第三步:移走重复记录 有许多方法可以移走重复记录,例如创建临时表,插入重复记录,以产生一个视图来删除这些记录。 可以使用子查询的方法来删除重复记录。 下面的语句会给出所有的重复记录(上文给的例子将返回一条记录) SELECT columns_of_interest
FROM table_name a
WHERE rowid > ( SELECT min(rowid)
FROM table_name b
WHERE b.pk_column_1 = a.pk_column_1
and b.pk_column_2 = a.pk_column_2 );
如果你想删除这些记录,只需把select改成delete即可。 DELETE
FROM table_name a
WHERE rowid > ( SELECT min(rowid)
FROM table_name b
WHERE b.pk_column_1 = a.pk_column_1
and b.pk_column_2 = a.pk_column_2 );
----------- ----------- --------
FRED 1234 234
FRED 1234 234
FRED 1234 112 字段pk_column_1和pk_column_2构成表主键,这样表中共有3条记录,但其中前两条记录是重复的。 第二步:解决问题 应该知道为什么会产生重复的记录,应该防止这种事情发生。 第三步:移走重复记录 有许多方法可以移走重复记录,例如创建临时表,插入重复记录,以产生一个视图来删除这些记录。 可以使用子查询的方法来删除重复记录。 下面的语句会给出所有的重复记录(上文给的例子将返回一条记录) SELECT columns_of_interest
FROM table_name a
WHERE rowid > ( SELECT min(rowid)
FROM table_name b
WHERE b.pk_column_1 = a.pk_column_1
and b.pk_column_2 = a.pk_column_2 );
如果你想删除这些记录,只需把select改成delete即可。 DELETE
FROM table_name a
WHERE rowid > ( SELECT min(rowid)
FROM table_name b
WHERE b.pk_column_1 = a.pk_column_1
and b.pk_column_2 = a.pk_column_2 );
相关阅读 更多 +