Mysql 在 select 语句外循环插入
Mysql insert with loop out of select statement
我有一个根据某些条件列出用户 ID 的查询。
现在我想将每个用户 ID 插入不同的 table。我在想一个遍历列表并逐行插入的循环。
这是我的 select 查询:
SELECT s.id, s.name FROM students s
limit 10000;
我怎样才能从中循环。如何从循环中的 select 语句中获取值?
DROP PROCEDURE IF EXISTS loop_date;
DELIMITER //
CREATE PROCEDURE loop_date()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE (number_of_students < 10000) DO
INSERT INTO users (student_id,student_name) VALUES (X?, Y?);
SET i = i+1;
END WHILE;
END;
//
DELIMITER ;
您可以 INSERT ... SELECT 在单个语句中,而不是 INSERT ... VALUES。
INSERT INTO users (student_id,student_name)
SELECT s.id, s.name FROM students s
limit 10000;
我有一个根据某些条件列出用户 ID 的查询。
现在我想将每个用户 ID 插入不同的 table。我在想一个遍历列表并逐行插入的循环。
这是我的 select 查询:
SELECT s.id, s.name FROM students s
limit 10000;
我怎样才能从中循环。如何从循环中的 select 语句中获取值?
DROP PROCEDURE IF EXISTS loop_date;
DELIMITER //
CREATE PROCEDURE loop_date()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE (number_of_students < 10000) DO
INSERT INTO users (student_id,student_name) VALUES (X?, Y?);
SET i = i+1;
END WHILE;
END;
//
DELIMITER ;
您可以 INSERT ... SELECT 在单个语句中,而不是 INSERT ... VALUES。
INSERT INTO users (student_id,student_name)
SELECT s.id, s.name FROM students s
limit 10000;