【发布时间】:2016-09-28 20:30:53
【问题描述】:
我有这张表,其中每一列都是一个 VARCHAR(或等效项):
field001 field002 field003 field004 field005 .... field500
500 个 VARCHAR 列。没有主键。并且没有任何列可以保证是唯一的。因此,确定两行是否相同的唯一方法是比较所有列的值。
(是的,这应该在 TheDailyWTF 中。不,这不是我的错。请耐心等待)。
我错误地插入了一组重复的行,我需要找到它们并删除它们。
这个表有 1200 万行,所以我不想重新创建它。
但是,我确实知道错误插入了哪些行(我有 .sql 文件)。
所以我想我会创建另一个表并用它们加载它。然后我会做某种连接,比较两个表上的所有列,然后从第一个表中删除相等的行。我尝试了 NATURAL JOIN,因为它看起来很有希望,但没有返回任何内容。
我有什么选择?
我使用的是 Amazon Redshift(我记得是 PostgreSQL 8.4),但我认为这是一个一般性的 SQL 问题。
【问题讨论】:
-
您要删除所有个重复的行还是保留其中的一个?
-
正如我在帖子前面所说的,我有数据,所以如果我运行的任何查询都删除了所有重复的行,那就没问题了。我可以再次加载集合,一次。
标签: sql postgresql amazon-redshift