如何根据规则排除SQL表中几乎重复的值?

时间:2017-06-07 15:21:34

标签: sql postgresql

考虑下表:

this table

我有数据给出了一个人的身份证和他们的国籍。有些人因为拥有双重国籍而两次出现在桌面上 我想帮忙做两件事:

1)如果某人拥有美国公民身份和其他公民身份,我想删除具有非美国公民身份的行

2)如果有人有两个非美国国籍,我想删除其中一个 - 没有偏好。

有任何建议如何做到这一点?

1 个答案:

答案 0 :(得分:2)

这样的事情应该做:

ion-item

另一种选择是使用Postgres' select id, name, citizenship from ( select id, name, citizenship, row_number() over (partition by id order by case when citizenship = 'US' then 1 else 2 end) as rn from the_table ) t where rn = 1 order by id; 运营商

distinct on ()