为列中的每个唯一值分配值[重复]
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
【讨论】:
以上是关于为列中的每个唯一值分配值[重复]的主要内容,如果未能解决你的问题,请参考以下文章