在MySQL中用多行循环遍历SQL结果

时间:2018-10-11 09:36:01

标签: mysql

假设我有一个“源表”,其中包含一些行,在本例中为四行。现在,我想为源表中的每一行向“目标表”中插入新行。

我当前的陈述是:

SET @id = 1;
INSERT INTO target_table (id, value)
VALUES (@id, 1),
       (@id, 2),
       (@id, 3),
       (@id, 4);

但是我想做这样的事情...

SET @id = 1;
myResultSet = SELECT value FROM source_table;
FOR EACH value in myResultSet
    INSERT INTO target_table (@id, @value)
END

3 个答案:

答案 0 :(得分:1)

您可以使用Insert ... Select语句:

INSERT INTO `target_table` (`id`, `value`) 
SELECT 1, `value` 
FROM `source_table` 

从以下语法中可以完全看出该语句的可能性:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    [(col_name [, col_name] ...)]
    SELECT ...
    [ON DUPLICATE KEY UPDATE assignment_list]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...

答案 1 :(得分:1)

INSERT INTO target_table ( id, value )
SELECT  row_number() OVER (order by <whatever>) , value FROM source_table

INSERT INTO target_table( id, value )
SELECT  1, value FROM source_table

取决于您的意思

答案 2 :(得分:1)

INSERT INTO target_table( id, value )
SELECT  1, value FROM source_table