为另一个表中的单个值插入多行

Posted

技术标签:

【中文标题】为另一个表中的单个值插入多行【英文标题】:Insert multiple rows for a single value in another table 【发布时间】:2020-07-01 21:55:48 【问题描述】:

这是我正在尝试做的一个模型:

我有下表-

表 1:

----------
|ID      |
----------
|    0001|
----------
|    0002|
----------

并且需要创建下表-

表 2:

-------------------------------------
|ID      |Table1ID|Value1  |Value2  |
-------------------------------------
|   00001|    0001|     abc|     def|
-------------------------------------
|   00002|    0001|     ghi|     jkl|
-------------------------------------
|   00003|    0002|     abc|     def|
-------------------------------------
|   00004|    0002|     ghi|     jkl|
-------------------------------------

其中 Value1 和 Value2 值是标量。

对于表 1 的所有值,如何将表 1 中具有相同值的多行插入到表 2 中?

【问题讨论】:

要插入的数据是如何创建的? “abc”、“def”等从何而来? 其他列(ID、Value1、Value2)来自哪里? @Dale K 所有其他值都是我需要凭空创建的标量值。它们还不存在。 @MohitVaghadiya 见上文 @philipxy 感谢您提供有关澄清的提示。鉴于问题的内容,您能否更具体地说明您希望我包含哪些代码或详细信息? 【参考方案1】:

我认为您想要一个带有派生表的cross join

insert into table2 (table1id, value1, value2)
select t1.id, v.value1, v.value2
from table1 t1
cross join (values ('abc', 'def'), ('ghi', 'jkl')) v(value1, value2)

【讨论】:

我了解交叉连接和表值构造函数。你能解释一下“v(value1, value2)”部分吗 @ChaitanyaChowgule:这些是由values() 生成的派生表及其列的别名。 知道了。谢谢,这正是我正在寻找的。​​span>

以上是关于为另一个表中的单个值插入多行的主要内容,如果未能解决你的问题,请参考以下文章

如何 SQL 为另一个表中的每个 id 插入一条记录? [复制]

使用 SSIS 将单个字段值拆分为第二个表中的多行

从文本框表单中将多行插入到单个表中 - Access 2010

SQL插入多行

向表中插入多行 - Access

从mysql 5.7中的变量将多行插入表中