假设我有一个“源表”,其中包含一些行,在本例中为四行。现在,我想为源表中的每一行向“目标表”中插入新行。
我当前的陈述是:
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
答案 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