如何删除重复的行并保留一行多列



我在一个名为bank_currency的表中有重复的数据,它看起来像这样:

currencyid | bankid
--------------------
8             1
8             1
8             1
16            2
16            2
16            2
14            3
14            3
14            3

我不知道为什么数据重复了三份,但我需要去掉所有重复的数据,每行只保留一份。所以我的结局是这样的:

currencyid | bankid
--------------------
8             1
16            2
14            3

我不能用ORDER BYbankidcurrencyid来告诉postgresql要保留哪一行,因为它们是重复的。也许是ROW_NUMBER的订单(如果可能的话(,只保留最低的ROW_NUMBER?非常感谢任何建议。

如果您的表没有id列,最好的选择可能是使用临时表:

CREATE TABLE bank_currency_temp AS
SELECT DISTINCT bankid, currencyid
FROM bank_currency;

之后删除原始表格

DROP TABLE bank_currency

然后重命名临时表

ALTER TABLE bank_currency_temp
RENAME TO bank_currency;

最新更新