在一个脚本中包含很多 SELECT 和 INSERTS
Lot of SELECT and INSERTS in one script
我想在我的 mysql 数据库中添加很多行。对于其中的每一行,我都需要在数据库中进行搜索。我将描述我现在是如何做的,但必须有更好的方法。
在 while 循环中,我遍历了一个数组,其中我有我需要插入值 1、值 2、值 3 的值的数据。
然后我做一个SELECT id FROM table WHERE column='value3';
然后我INSERT INTO insertTable VALUES (value1, value2, id);
此方法导致大量查询。一个可能的改进可能是不对插入进行排队,而是将插入值再次放入数组中并在最后创建一个多插入。但是还是有很多SELECT个查询。
任何改进方法的线索?
这是一种方法,
您可以构建一个 table 来包含您所有的 value1、value2、value3 值
就像在一个循环中建立一个类似于下面的语句:
第一次通过循环将你的sql语句变成
CREATE TABLE T SELECT value1 as value1 ,value2 as value2,value3 as value3
然后每次通过循环将你的sql语句设置为追加
UNION SELECT value1, value2, value3
然后执行那个 sql 语句,这样你就有了 table T 和你的值。
然后你可以像这样运行一个INSERT。
INSERT INTO insertTable(value1,value2,id)
SELECT T.value1,T.value2,`table`.id
FROM T INNER JOIN `table` ON `table`.`column` = T.value3;
这是一个 sql小提琴示例 http://sqlfiddle.com/#!9/58daf/1
然后你可以在之后掉落 table T。
或者,如果需要,您可以只构建 SELECT UNION 查询而不使用 create Table T 并将该查询放在方括号中并将其放在 FROM
和 Before 之后T
直接在 INSERT 语句中,因此您有一个查询。
我想在我的 mysql 数据库中添加很多行。对于其中的每一行,我都需要在数据库中进行搜索。我将描述我现在是如何做的,但必须有更好的方法。
在 while 循环中,我遍历了一个数组,其中我有我需要插入值 1、值 2、值 3 的值的数据。
然后我做一个SELECT id FROM table WHERE column='value3';
然后我INSERT INTO insertTable VALUES (value1, value2, id);
此方法导致大量查询。一个可能的改进可能是不对插入进行排队,而是将插入值再次放入数组中并在最后创建一个多插入。但是还是有很多SELECT个查询。
任何改进方法的线索?
这是一种方法,
您可以构建一个 table 来包含您所有的 value1、value2、value3 值 就像在一个循环中建立一个类似于下面的语句:
第一次通过循环将你的sql语句变成
CREATE TABLE T SELECT value1 as value1 ,value2 as value2,value3 as value3
然后每次通过循环将你的sql语句设置为追加
UNION SELECT value1, value2, value3
然后执行那个 sql 语句,这样你就有了 table T 和你的值。
然后你可以像这样运行一个INSERT。
INSERT INTO insertTable(value1,value2,id)
SELECT T.value1,T.value2,`table`.id
FROM T INNER JOIN `table` ON `table`.`column` = T.value3;
这是一个 sql小提琴示例 http://sqlfiddle.com/#!9/58daf/1
然后你可以在之后掉落 table T。
或者,如果需要,您可以只构建 SELECT UNION 查询而不使用 create Table T 并将该查询放在方括号中并将其放在 FROM
和 Before 之后T
直接在 INSERT 语句中,因此您有一个查询。