繁体   English   中英

sql 从另一个表插入多行

[英]sql insert multiple rows from another table

我有桌子:

ContainerSubTypes (Id, Name)有很多记录,

WorkAreas (Id, Name)只有一行,

WorkAreaContainerSubTypes table (Id, WorkAreaId, ContainerSubTypeId) - 空表。

我需要将数据插入WorkAreaContainerSubTypes表,它应该如下所示:

(1, 1, containersubtype1_id)
(2, 1, containersubtype2_id)
(3, 1, containersubtype3_id)

我正在尝试 sql ,例如:

INSERT INTO WorkAreaContainerSubTypes (WorkAreaId, ContainerSubTypeId)
    VALUES
    (1, (SELECT Id FROM ContainerSubTypes));

但是SELECT查询有超过 1 行,它会抛出错误。 如何实现该插入?

VALUES表值构造函数指定一组要构造成表的行值表达式,因此需要不同的语句:

INSERT INTO WorkAreaContainerSubTypes (WorkAreaId, ContainerSubTypeId)
SELECT 1, Id 
FROM ContainerSubTypes;

作为附加说明,只有当SELECT Id FROM ContainerSubTypes语句返回单行或没有行(可能带有可选的WHERE子句)时,才可以使用VALUES

INSERT INTO WorkAreaContainerSubTypes (WorkAreaId, ContainerSubTypeId)
VALUES
   (1, (SELECT Id FROM ContainerSubTypes WHERE Name = 'Some name'));

只需使用insert. . . select insert. . . select insert. . . select

INSERT INTO WorkAreaContainerSubTypes (WorkAreaId, ContainerSubTypeId)
    SELECT 1, Id
    FROM ContainerSubTypes;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM