将数据插入具有主键的表(多列)中,该表具有除主键以外的数据的另一个数据
Posted
技术标签:
【中文标题】将数据插入具有主键的表(多列)中,该表具有除主键以外的数据的另一个数据【英文标题】:Inserting data into a table(mutliple columns) which has primary key from another data which has data except primary key 【发布时间】:2021-11-30 04:24:54 【问题描述】:我有一个包含 3 列 ID(主键)、名称、城市的表。
我需要从另一个只有名称和城市的表中导入数据。
我可以将插入写入表 1(Name, City) select Name, City from table2.
但是我需要表 1 中的 ID,需要使用序列插入。
我试过了:
插入 table1(ID, Name,City) 值(seq.nextval, select distinct name, city from table2)。但我收到一条错误消息,提示值数量不足。
我正在 SQL Oracle 中尝试它。有人可以帮我解决这个问题吗?
【问题讨论】:
将您的seq.nextval
放入select
没有工作@HoneyBadger。给我缺失的表达。
请编辑问题并显示表的实际 CREATE TABLE 语句
【参考方案1】:
您正在混合使用 insert ... values
和 insert ... select
syntax。
您编辑了您的问题以包含 distinct
,这意味着您有重复的名称/城市对,您想要禁止显示;但两个版本都没有收到您报告的错误。如果你没有重复,那么你可以这样做:
insert into table1(ID, Name,City)
select seq.nextval, name, city from table2;
如果确实有重复项,则不能只添加 distinct
关键字,而是可以使用子查询:
insert into table1 (id, name, city)
select seq.nextval, name, city
from (
select distinct name, city
from table2
);
db<>fiddle
您还可以通过触发器设置 ID。如果您使用的是最新版本,则可以改用标识列 - 但您使用 Oracle 11g 标记了问题,而这些问题不可用。
【讨论】:
以上是关于将数据插入具有主键的表(多列)中,该表具有除主键以外的数据的另一个数据的主要内容,如果未能解决你的问题,请参考以下文章