我正在使用postgreSQL 9.1,并想使用以下提示从我的表中删除重复项:https://dev59.com/dXVD5IYBdhLWcg3wU56H#3822833
因此,我的查询看起来像这样:
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
你有什么想法可以让它工作吗? 谢谢!
select count(1) from cte where rn > 1
,我会得到正确的数字,但是select count(1) from card where id in (select id from cte where rn > 1)
会返回所有行。 - Arkadiy Kukarkinid
不是唯一的吗?为了帮助您,最好提供有关您的结构和想要获得的结果的更多信息。 - Roman Pekar