在以下情况下最佳做法是什么:
我想编写一个MySQL语句来从结果集中获取数据(3个表的连接),并将这些值插入3个新表中。现在有两个问题,一个是我想同时插入3个表,而另一个是需要进入三个表中的两个表的值之一是插入值生成的主要kry进入三个表中的第一个。
在高级术语中(忽略语法),我想:
INSERT INTO `table1`(
`one_field1`,
`one_field2`,
...
), `table2`( -- not possible?
`two_field1`,
`two_field2`,
...
), `table3`( -- not possible?
`three_field1`,
`three_field2`,
...
)
SELECT value1,
value2,
...,
value3,
value4,
...,
value5,
value6,
...
FROM ...
其中value3
和value5
是将value1
和value2
插入table1
而生成的主要密钥。
将其分解为多个查询是否更好(最佳实践),或者是否有一种在单个查询中执行此操作的有效方法。
由于
答案 0 :(得分:1)
无法使用一个语句插入多个表 http://dev.mysql.com/doc/refman/5.1/en/insert.html
您可以使用`last_insert_id()从最后一次插入中获取自动增量值。因此,如果您分解插入,则可以在运行下一个插入之前获取每个插入的最后一个主键(假设您使用自动增量)。 http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_last-insert-id
答案 1 :(得分:-2)
例如:INSERT INTO districts
(district
)VALUES('Bagalkot'),('Bangalore Rural'),('Bangalore Urban'),('Belgaum'),('Bellary') ),('Bidar'),('Bijapur'),('Chamraj Nagar'),('Chickmagalur'),('Chickmagalur'),('Chitradurga'),('Dakshina Kannada'),('Davanagere') ),( '达尔瓦德县'),( 'Gadag'),( '古尔伯加'),( '哈桑'),( '哈韦里'),( 'Kodagu'),( '科拉尔'),( '科普帕尔'), ( 'Mandya'),( '迈索尔'),( '拉马纳加拉姆'),( '赖久尔'),( '希莫加'),( '杜姆古尔'),( '卡瓦尔'),( '乌杜皮'),(”耶德吉尔')