INSERT ... SELECT 是SQL中高效批量迁移数据的方式,适用于表结构一致场景,需确保字段数量顺序、数据类型匹配及权限约束,常用于历史归档、同步和测试数据构造。

SQL 中的 INSERT ... SELECT 是一种高效、简洁的批量数据迁移方式,无需逐条插入,直接从一个或多个表中查出数据并写入目标表。它特别适合表结构一致(或可映射)的场景,比如历史归档、数据同步、测试数据构造等。
最简形式如下:
INSERT INTO target_table (col1, col2, ...) SELECT col1, col2, ... FROM source_table [WHERE ...];
关键点:
跨表复制部分数据:
把订单表中 2023 年已完成的订单迁入历史表:
INSERT INTO orders_history (order_id, user_id, amount, create_time) SELECT order_id, user_id, amount, create_time FROM orders WHERE status = 'completed' AND create_time
多表关联生成新记录:
根据用户表和配置表,批量为新上线用户初始化默认设置:
INSERT INTO user_settings (user_id, setting_key, setting_value) SELECT u.id, 'theme', 'light' FROM users u LEFT JOIN user_settings s ON u.id = s.user_id WHERE s.user_id IS NULL;
批量迁移时注意以下几点:
相比其他迁移手段:
INSERT SELECT 在同构数据库内迁移时,平衡了简洁性、可控性和执行效率,是 DBA 和开发最常使用的标准方案。
基本上就这些。
以上就是SQLINSERTSELECT用法说明_SQL批量数据迁移方式的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号