gpt4 book ai didi

SQL:多次复制一行,每次更改一个值

转载 作者:行者123 更新时间:2023-12-03 23:32:02 25 4
gpt4 key购买 nike

我在表中有一行数据:

Key | Val1 | Val2
----+------+-----
1 | A | B

我想复制这一行,但从列表中为每个新行分配一个不同的键(实际上是一个外键):
New keys
--------
2
3
4

该列表可以通过查询轻松获得。复制后,该表应如下所示:
Key | Val1 | Val2
----+------+-----
1 | A | B
2 | A | B
3 | A | B
4 | A | B

到目前为止,我想出的只是这个:
INSERT INTO table (Key, Val1, Val2) (
SELECT '2' AS Key, Val1, Val2 FROM table WHERE Key='1'
);

这有效,但当然它一次只复制一行。有没有办法一次复制所有行?

如果它有所作为,我正在使用 Oracle。

最佳答案

您可以使用 SELECT .. FROM DUAL 来组成值,您可以使用 UNION ALL 将多行组合成一个结果。有多种其他方法可以创建结果集,例如递归公用表表达式。

INSERT INTO table (Key, Val1, Val2)
SELECT d.newKey, t.Val1, t.Val2
FROM table t
cross join (select 2 NewKey from dual union all
select 3 NewKey from dual union all
select 4 NewKey from dual) d;

如果您的新键来自子查询,那就更容易了,例如
INSERT INTO table (Key, Val1, Val2)
SELECT d.FKey, t.Val1, t.Val2
FROM table t
cross join (select FKey
from SomeOtherTable
Where ......) d;

但是,请注意,因为您正在复制 FROM tableINTO table ,您将复制来自 table 的所有记录同时为每个外键。

关于SQL:多次复制一行,每次更改一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13023404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com