【问题标题】:How to add a column in the existing table and update all the existing data in postgresql?如何在现有表中添加一列并更新postgresql中的所有现有数据?
【发布时间】:2020-03-31 11:36:26
【问题描述】:

我有一个现有的表,我想插入一个新列并更新整个表中的值,这样我就不必再次重新填充表了。

但问题是,我有一个 route 列,其格式如下所示。我想添加一个新列 route_name,我不会在第二个下划线“_”之后包含数据

如何通过运行查询来做到这一点?

route                                     route_name  (should look like)

dehradun_delhi_09:30_am                        dehradun_delhi        
katra_delhi_07:30_pm                           katra_delhi                                 
delhi_katra_08:00_pm                           delhi_katra  
bangalore_chennai_10:45_pm                     bangalore_chennai 
delhi_lucknow_09:00_pm                         delhi_lucknow  
chennai_bangalore_10:30_pm                     chennai_bangalore 
lucknow_varanasi_10:30_pm                      lucknow_varanasi
varanasi_lucknow_09:30_pm                      varanasi_lucknow  
delhi_katra_08:00_pm                           delhi_katra
katra_delhi_07:30_pm                           katra_delhi
delhi_jalandhar_10:00_pm                       delhi_jalandhar
jalandhar_delhi_11:00_am                       jalandhar_delhi
delhi_amritsar_11:00_pm                        delhi_amritsar   
amritsar_delhi_11:00_pm                        amritsar_delhi

请告诉我应该运行什么查询,以便回填的数据也得到更新,并在现有表中更新名为 route_name 的新列

【问题讨论】:

  • 你尝试了什么?
  • 我是初学者,所以对Postgresql了解不多。我已经从表名中选择了路由,并使用了一个 alter table 查询在其中插入了一个新列,但我不知道如何将数据转换为所需的格式。

标签: postgresql sql-update ddl alter-table


【解决方案1】:

您需要分两步完成此操作。 首先添加列:
alter table route_table add column route_name text;
然后填充它:
update route_table set route_name=split_part(route,'_',1)

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 2021-06-29
    • 2010-12-24
    • 2011-09-19
    • 2018-08-14
    • 2012-07-29
    • 2022-08-05
    • 1970-01-01
    相关资源
    最近更新 更多