如何生成mysql查询,一次插入2000条记录?
这是我的设想 我有一张桌子如何生成mysql查询,一次插入2000条记录?,mysql,Mysql,这是我的设想 我有一张桌子 ID(PK) TYPE(PK) 01 3 02 3 03 3 04 3 现在我必须插入ID高达1000的类型3。。。 是否有自动执行该操作的选项?不确定MySQL查询,但既然您熟悉PHP,为什么不编写一个非常简单的PHP脚本,循环1000次并执行插入操作?不确定MySQL查询,但既然您熟悉PHP,为什么不编写一个非常简单的PHP脚本,循环1000次并执行插入操作插入..?使用存储过程 DELIMITER $$ CR
ID(PK) TYPE(PK)
01 3
02 3
03 3
04 3
现在我必须插入ID高达1000的类型3。。。
是否有自动执行该操作的选项?不确定MySQL查询,但既然您熟悉PHP,为什么不编写一个非常简单的PHP脚本,循环1000次并执行插入操作?不确定MySQL查询,但既然您熟悉PHP,为什么不编写一个非常简单的PHP脚本,循环1000次并执行插入操作插入..?使用存储过程
DELIMITER $$
CREATE PROCEDURE insertMany(Pstart_id INT, Pend_id INT, Ptype INT)
BEGIN
DECLARE i INT;
IF (pstart_id > pend_id) THEN BEGIN
SET i = PEnd_id;
SET Pend_id = Pstart_id;
SET Pstart_id = Pend_id;
END; END IF;
SET i = Pstart_id;
WHILE I <= Pend_id DO BEGIN
INSERT INTO table1 (id, `type`) VALUES (i, Ptype);
SET i = i + 1;
END; END WHILE;
END $$
DELIMITER ;
SELECT @first_id:= max(id)+1, @last_id:= max(id)+2001 FROM table1;
CALL InsertMany(@first_id, @last_id, 3);
这比使用php循环要快,因为您没有通过网络发送1000个insert查询
或者您可以看看这个问题:使用存储过程
DELIMITER $$
CREATE PROCEDURE insertMany(Pstart_id INT, Pend_id INT, Ptype INT)
BEGIN
DECLARE i INT;
IF (pstart_id > pend_id) THEN BEGIN
SET i = PEnd_id;
SET Pend_id = Pstart_id;
SET Pstart_id = Pend_id;
END; END IF;
SET i = Pstart_id;
WHILE I <= Pend_id DO BEGIN
INSERT INTO table1 (id, `type`) VALUES (i, Ptype);
SET i = i + 1;
END; END WHILE;
END $$
DELIMITER ;
SELECT @first_id:= max(id)+1, @last_id:= max(id)+2001 FROM table1;
CALL InsertMany(@first_id, @last_id, 3);
这比使用php循环要快,因为您没有通过网络发送1000个insert查询
或者你可以看看这个问题:如果ID是一个数字:
INSERT INTO TableX
( ID, TYPE )
VALUES
(1, 3) ,
(2, 3) ,
(3, 3) ,
(4, 3) ,
(5, 3) ,
(6, 3) ;
INSERT INTO TableX
( ID, TYPE )
SELECT
ID, 3
FROM
( SELECT
7+ d0.ID - 1 + (d1.ID * 6) - 6 + (d2.ID * 36) - 36 + (d3.ID * 216) - 216
AS ID
FROM
TableX AS d0
CROSS JOIN
TableX AS d1
CROSS JOIN
TableX AS d2
CROSS JOIN
TableX AS d3
WHERE d0.TYPE = 3 AND d0.ID <= 6
AND d1.TYPE = 3 AND d1.ID <= 6
AND d2.TYPE = 3 AND d2.ID <= 6
AND d3.TYPE = 3 AND d3.ID <= 6
) AS tmp
WHERE ID <= 1000 ;
如果ID是一个数字:
INSERT INTO TableX
( ID, TYPE )
VALUES
(1, 3) ,
(2, 3) ,
(3, 3) ,
(4, 3) ,
(5, 3) ,
(6, 3) ;
INSERT INTO TableX
( ID, TYPE )
SELECT
ID, 3
FROM
( SELECT
7+ d0.ID - 1 + (d1.ID * 6) - 6 + (d2.ID * 36) - 36 + (d3.ID * 216) - 216
AS ID
FROM
TableX AS d0
CROSS JOIN
TableX AS d1
CROSS JOIN
TableX AS d2
CROSS JOIN
TableX AS d3
WHERE d0.TYPE = 3 AND d0.ID <= 6
AND d1.TYPE = 3 AND d1.ID <= 6
AND d2.TYPE = 3 AND d2.ID <= 6
AND d3.TYPE = 3 AND d3.ID <= 6
) AS tmp
WHERE ID <= 1000 ;
也许你可以尝试自动插入。也许你可以尝试自动插入