【问题标题】: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 个值,并且这些值重复
  • 我不认为这是另一个问题的重复。投票重新开放。

标签: sql postgresql


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-03
      • 2017-07-10
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多