使用选择插入多行

Posted

技术标签:

【中文标题】使用选择插入多行【英文标题】:Insert multiple rows using select 【发布时间】:2011-07-19 00:25:59 【问题描述】:

我正在尝试将 2 行插入到同一个表中。第一个将从选择中输入数据,第二个将使用 vars 作为数据。我能够插入第一行,但无法插入多行。

$partner_id 用于将行相互链接。为此,我在 php 中使用生成的 32char 值。无论如何设置edit_partner_id mysql 作为插入的第一行的id 或者这是不可能的,因为必须先创建第一行才能获得最后一个id?

是否可以为此添加更新,或者我必须在单独的查询中运行它?

$sql = "INSERT INTO edits_customers (customer_id, creator_id, firstname, surname,
            house_no, address_1, address_2, address_3, city, county, postcode,
            country, email, home_tel, mobile_tel, work_tel, notes, edit_type,
            edit_partner_id )
        (SELECT *, 'before', '$partner_id' FROM customers WHERE customers.id = 123),
        ('$var1', '$var2', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
            '', 'after', $partner_id)";

谢谢

【问题讨论】:

【参考方案1】:

如果我正确理解了您的问题,即您尝试从另一个表中插入一些数据以及您自己提供的一些数据,那么您应该能够使用 UNION 执行类似的操作:

INSERT INTO SomeTable ( Col1, Col2, Col3 )
SELECT Val1, Val2, Val3 FROM SomeOtherTable
UNION
SELECT 'MyProvidedVal1', 'MyProvidedVal2', 'MyProvidedVal3'

希望对您有所帮助...

【讨论】:

以上是关于使用选择插入多行的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中的多行插入查询(从一张表中选择多行并插入到另一张表中[重复]

如何在插入数据时将多行选择的 id 传递到打印页面

通过在输入框中插入行数来选择多行复选框

如何在 vi/Vim 中的多行选择的开头插入文本

使用键盘快捷键在 Intellij 中选择多行

如何在 PHPStorm 中将多行选择扩展到整行?