我必须为现有表添加唯一约束.这很好,除了表已经有数百万行,并且许多行违反了我需要添加的唯一约束.
删除有问题的行的最快方法是什么?我有一个SQL语句,它找到重复项并删除它们,但它需要永远运行.有没有其他方法可以解决这个问题?也许备份表,然后在添加约束后恢复?
sql postgresql duplicate-removal unique-constraint sql-delete
我正在使用postgreSQL 9.1,我想使用这个技巧从我的表中删除重复项:https: //stackoverflow.com/a/3822833/2239537
所以,我的查询看起来像这样:
WITH cte
AS (SELECT ROW_NUMBER()
OVER (PARTITION BY code, card_id, parent_id
ORDER BY id DESC) RN
FROM card)
DELETE FROM cte
WHERE RN > 1
Run Code Online (Sandbox Code Playgroud)
但它告诉我
ERROR: relation "cte" does not exist
SQL state: 42P01
Character: 157
Run Code Online (Sandbox Code Playgroud)
但是这个说法很好:
WITH cte
AS (SELECT ROW_NUMBER()
OVER (PARTITION BY code, card_id, parent_id
ORDER BY id DESC) RN
FROM merchantcard)
SELECT * FROM cte
WHERE RN > 1
Run Code Online (Sandbox Code Playgroud)
任何想法如何让它工作?谢谢!