vol*_*one 2 postgresql postgresql-14
我在一个名为的表中有重复的数据bank_currency,如下所示:
currencyid | bankid
--------------------
8 1
8 1
8 1
16 2
16 2
16 2
14 3
14 3
14 3
Run Code Online (Sandbox Code Playgroud)
我不知道为什么数据被重复一式三份,但我需要删除所有重复项并仅保留每行之一。所以我最终是这样的:
currencyid | bankid
--------------------
8 1
16 2
14 3
Run Code Online (Sandbox Code Playgroud)
我无法ORDER BY或告诉 postgresql 要保留哪一行,因为它们是重复的bankid。currencyid也许是一个订单ROW_NUMBER(如果可能的话)并保持最低ROW_NUMBER?任何建议都非常感激。
如果您的表没有 id 列,最好的选择可能是使用临时表:
CREATE TABLE bank_currency_temp AS
SELECT DISTINCT bankid, currencyid
FROM bank_currency;
Run Code Online (Sandbox Code Playgroud)
之后删除原来的表
DROP TABLE bank_currency
Run Code Online (Sandbox Code Playgroud)
然后重命名临时表
ALTER TABLE bank_currency_temp
RENAME TO bank_currency;
Run Code Online (Sandbox Code Playgroud)