为另一个表中的单个值插入多行
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 插入一条记录? [复制]