一个查询中的多个 INSERT INTO 语句
Posted
技术标签:
【中文标题】一个查询中的多个 INSERT INTO 语句【英文标题】:Multiple INSERT INTO statements within one query 【发布时间】:2018-12-13 08:02:25 【问题描述】:我有两张桌子:BT 和 ST。 以下是我希望我能完成的:
INSERT INTO BT (c1,c2,c3) values (v1,v2,v3)
ST 是一个有 89 行和 1 列的表。如果可以,我该如何制定一个查询,以便插入适用于 ST 表中的 89 个值中的每一个?
(请记住:这些值是随机的,我无法将它们联系起来)
c1-c3= column1,column2,column3
v1-v3= 值 1,值 2,值 3 (v2 和 v3 是预定义和设置的,不需要更改)
我尝试了更明显的事情但没有成功,例如:
INSERT INTO BT (c1,c2,c3) values ((select c1 from ST),v2,v3)
但该行所做的只是返回一般的 sql 语法错误。
我承认这可以通过 89 行“INSERT INTO”来执行,并且我每次都更改一个值,但这可以以更优雅的方式完成吗?
我正在使用 mysql
【问题讨论】:
【参考方案1】:你只想要insert . . . select
:
insert into BT (c1, c2, c3)
select c1, v2, v3
from ST
【讨论】:
但是 ST 只保存 v1 的值,而 v2 和 v3 在查询中设置一次。 (/* SQL 错误 (1241): 操作数应包含 1 列 */) 是该建议的结果 @NikolaPavlovic 。 . .我不明白。您可以设置变量@v1
和@v2
或只传入常量。
我想使用 SQL 执行插入到 BT 表中的查询,其中 v2 和 v3 值由我设置,但 v1 要从 ST 表的 c1 列中使用
这确实有效,但必须将 v2 和 v3 定义为附加列,因为 BT 有 3 列而 ST 只有一个> insert into BT (c1,c2,c3) select c1,'number1' as v2,'number2' as v3 from ST
@NikolaPavlovic 。 . .是的,你可以传入常量。以上是关于一个查询中的多个 INSERT INTO 语句的主要内容,如果未能解决你的问题,请参考以下文章
“INSERT INTO 语句中的语法错误”和“没有为一个或多个必需参数提供值”
Access 2003中的SQL:INSERT INTO和多个SELECT查询