在一个脚本中包含很多 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 语句中,因此您有一个查询。