mysql - 在 MySQL 中循环使用多行的 SQL 结果
问题描述
假设我有一个“源表”,其中包含一些行,在本例中为四行。现在,我想为源表中的每一行将新行插入到“目标表”中。
我目前的说法是:
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
解决方案
您可以使用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] ...
推荐阅读
- java - JNI 为同一个逻辑 Java 对象返回不同的作业
- google-cloud-firestore - firebase Firestore中的深度collectionGroup查询
- python - Pandas 仅删除 '"' 后面的字符
- visual-studio-code - Mac VS 代码“ImportError:没有名为 pygame 的模块”
- rust - Rust-analyzer web-sys 文档“未知”
- c++ - 派生类重用基类操作
- mysql - 相同的 CREATE VIEW 查询适用于 localhost 数据库,但不适用于 ClearDB
- javascript - 如何开玩笑地模拟函数?
- php - Wordpress ACF 自定义 Shotcode 和 crbug/1173575,非 JS 模块文件已弃用错误
- html - PWA 在重定向到其他 URL 时显示 Safari 控件