【问题标题】:How to insert data from another table into an existing table, with an autoincrementing id?如何使用自动递增 id 将另一个表中的数据插入到现有表中?
【发布时间】:2016-11-08 19:37:08
【问题描述】:

我有两个大表,有很多重复的值,我刚刚创建了一个新的数据库模式。现在,我必须提取所有数据以将它们插入到新表中。

但是,我遇到了一个问题:我想做的是从一张大表中提取一列(暂时),并将其插入到表中 Town(id_town ,town_name),其中 id_town 是一个自动递增的主键,如:

ALTER TABLE Town
ADD COLUMN id_town SERIAL PRIMARY KEY;

我这样做了,所以我可以提取所有城镇,并为每个城镇提供他们的特定 ID。 (如果你有更好的解决方案,我顺便采纳!)

所以,我正在尝试提取数据,但它不起作用:

INSERT INTO town
SELECT DISTINCT location
FROM old_table1

显示的错误告诉我它正在等待 id_town 的值;但是,根据我对递增值的理解,它应该自己生成。

我做错了什么?


我遇到的另一个问题:我想我有正确的语法从旧表中提取一列并将其放入新表中,但我真的不知道我应该如何提取特定的来自两个旧表之一的列,并将它们仅放在新表的某些列中:

例如,我有一个表,它有 6 列(包括自动递增 id),其中 3 列来自 old_table1,其中 2 列来自 old_table2。我应该如何提取数据?

非常感谢!

【问题讨论】:

    标签: mysql database postgresql database-schema


    【解决方案1】:

    试试这个

    INSERT INTO town (town_name)
    SELECT DISTINCT location
    FROM old_table1
    

    如果您没有为所有列提供值,那么您应该明确指定要插入的列

    【讨论】:

    • 是的,它正在工作,非常感谢!现在我正在尝试了解如何使我的系统工作,因为我现在正在尝试使用星型模式,这是我第一次尝试!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2016-04-17
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 2021-07-16
    • 2019-06-23
    相关资源
    最近更新 更多