【问题标题】:Multiple INSERT INTO statements within one query一个查询中的多个 INSERT INTO 语句
【发布时间】:2025-12-07 20:20:02
【问题描述】:

我有两张桌子: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

【问题讨论】:

    标签: mysql sql variables multiple-insert


    【解决方案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 。 . .是的,你可以传入常量。
    最近更新 更多