我使用PostgreSQL 9.1,我想利用這個技巧,從我的表中刪除重複: https://stackoverflow.com/a/3822833/2239537PostgreSQL用於銷燬「關係不存在」
所以,我的查詢看起來像這樣:
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
但它顯示我
ERROR: relation "cte" does not exist
SQL state: 42P01
Character: 157
然而這一說法正常工作:
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
任何想法如何讓它工作? 謝謝!
哇,謝謝快速回復和有用的答案!爲我工作,只需添加「刪除FROM卡」,但這當然只是錯字。 –
@AlexKartishev是的,謝謝,更新 –
第一個解決方案似乎刪除表中的所有行。我不明白cte的行爲:如果我做'從cte選擇count(1),其中rn> 1'我得到正確的數字,但是'select select count(1)from card where id in(select id from cte where rn> 1)'返回所有行 –