gpt4 book ai didi

sql - 多选插入

转载 作者:行者123 更新时间:2023-12-04 22:30:34 27 4
gpt4 key购买 nike

我有一个返回一些 ora-01427 错误的 SQL 请求:

single-row subquery returns more than one row


INSERT INTO my_table (value0, value1, value2, value3) 
VALUES((SELECT MAX(value0) FROM my_table), '5', (SELECT DISTINCT(value2) FROM another_table), '8');

问题是,我需要两个硬编码值,我需要一个仅返回一行的 select 值,并且我想为第二个 select 返回的每一行执行此操作。

如果我只有一个选择,我觉得这个查询会起作用。有没有办法在 INSERT 中执行多个 SELECT ?什么是语法?

编辑:my_table 和 some_table 实际上是同一张表,抱歉一开始不清楚,实际上,我需要 value0 是唯一的,所以它每次都需要检索最大的 id,不仅仅是在插入之前而是每次新的行被插入。

最佳答案

您需要切换到插入/选择:

INSERT INTO my_table (value0, value1, value2, value3) 
SELECT DISTINCT (SELECT MAX(value0) FROM some_table), '5', value2, '8'
FROM another_table;

要回答您对 jarlh 帖子的评论:“如果每次插入一个值时都需要增加 some_table = my_table 和 value0 怎么办?”
INSERT INTO my_table (value0, value1, value2, value3) 
SELECT
(SELECT MAX(value0) FROM my_table)
+ ROWNUM -- ROW_NUMBER() OVER (ORDER BY whatever you need)
,'5'
,value2
,'8'
FROM
(
SELECT DISTINCT value2
FROM another_table
) dt

编辑:

我切换到 ROWNUM ,但这是专有语法。 Oracle 还支持标准 SQL 的 ROW_NUMBER,它也应该按原样工作。

关于sql - 多选插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30591636/

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