2011-03-20 74 views
15

我想将2行插入到同一个表中。第一个将从select中输入数据,第二个将使用数据变量。我可以插入第一行,但无法插入多行。使用select插入多行

$ partner_id是将行彼此链接。对于这个即时通讯使用PHP中生成的32char值。有没有办法用mysql将edit_partner_id设置为插入的第一行的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)"; 

感谢

回答

28

如果我正确理解你的问题,在这里你要插入另一个表中的一些数据,你自己提供的一些数据,你应该能够使用于做这样的事UNION:

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

希望帮助...

+0

只是工作。谢谢 – arbme 2011-03-20 05:27:01

+0

我没有在文档中找到解决方案,所以非常感谢你:) – 2017-07-07 13:42:46