为列

时间:2018-10-12 16:19:14

标签: sql postgresql

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

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

2 个答案:

答案 0 :(得分:0)

在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;

答案 1 :(得分:-1)

您可以轻松地在country表中添加新的ID列来满足此需求。

请参见以下语法:

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