为列中的每个唯一值分配值[重复]

Posted

技术标签:

【中文标题】为列中的每个唯一值分配值[重复]【英文标题】:Assign values for every unique value in column [duplicate] 【发布时间】:2019-03-17 22:01:24 【问题描述】:

我在 PostgreSQL 中有一个表,其中有一列“国家”,其中有 32 个不同的字符串值,但行数要多得多

如何为每个唯一字符串分配一个特定的数值(例如,'Austria' = 1、'Australia' = 2、...、'USA' = 32) 我可以使用 UPDATE 语句,但是,在这种情况下,手动执行 32 个国家/地区并不是一个好方法,我猜。我希望有另一种方法。

【问题讨论】:

您的表格是否有 32 行,每行代表不同的国家/地区,还是有更多行但只有 32 个不同 [和重复] 值? 它有更多的行,但在国家列中只有 32 个值,并且这些值重复 我不认为这是另一个问题的重复。投票重新开放。 【参考方案1】:

在 Postgres 中,这里采用一种方法:

update country c
    set col = cc.seqnum
    from (select c.*, row_number() over (order by country) as seqnum
          from country c
         ) cc
    where cc.country = c.country;

【讨论】:

【参考方案2】:

您可以轻松地在country 表中添加一个新的 ID 列来满足这一要求。

请参阅下面的语法:

Alter Table country
Add Id Int Identity(1, 1)
Go

【讨论】:

以上是关于为列中的每个唯一值分配值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL:为列中的每个值创建一个新行,其中更多值用逗号分隔

如何为列中的每个唯一值获取数据框中的项目数[重复]

计算唯一字段的列中的重复值

Pandas,对于一列中的每个唯一值,在另一列中获取唯一值

使用 MySQL 或 H2 将空值替换为列中的最新值

从文本文件中删除每个单独列中的重复项