MySql:如何将多行中的多列插入另一个 table?
MySql: How do I insert multiple columns from multiple rows into another table?
- 我想从
source_table
中的多行复制多列(不是全部),并在 destination_table
中为单行中的每组值创建一个新行。
- 所以在这个例子中,应该在
destination_table
中创建 5 个新行,每个行都设置了三个字段:
INSERT INTO destination_table (source_id, foo_id, bar)
VALUES(
(SELECT id, foo_id, bar FROM source_table WHERE id=399274),
(SELECT id, foo_id, bar FROM source_table WHERE id=399279),
(SELECT id, foo_id, bar FROM source_table WHERE id=380409),
(SELECT id, foo_id, bar FROM source_table WHERE id=400037),
(SELECT id, foo_id, bar FROM source_table WHERE id=401026)
);
但这会导致错误:
ERROR 1241 (21000): Operand should contain 1 column(s)
- 我仔细阅读了许多处理类似问题的文章,但找不到具体的答案。
不使用插入...值语法,而是使用插入...select:
INSERT INTO destination_table (source_id, foo_id, bar)
SELECT id, foo_id, bar FROM source_table
WHERE id in (399274,399279,380409,400037,401026);
- 我想从
source_table
中的多行复制多列(不是全部),并在destination_table
中为单行中的每组值创建一个新行。 - 所以在这个例子中,应该在
destination_table
中创建 5 个新行,每个行都设置了三个字段:
INSERT INTO destination_table (source_id, foo_id, bar)
VALUES(
(SELECT id, foo_id, bar FROM source_table WHERE id=399274),
(SELECT id, foo_id, bar FROM source_table WHERE id=399279),
(SELECT id, foo_id, bar FROM source_table WHERE id=380409),
(SELECT id, foo_id, bar FROM source_table WHERE id=400037),
(SELECT id, foo_id, bar FROM source_table WHERE id=401026)
);
但这会导致错误:
ERROR 1241 (21000): Operand should contain 1 column(s)
- 我仔细阅读了许多处理类似问题的文章,但找不到具体的答案。
不使用插入...值语法,而是使用插入...select:
INSERT INTO destination_table (source_id, foo_id, bar)
SELECT id, foo_id, bar FROM source_table
WHERE id in (399274,399279,380409,400037,401026);