引言

在数据库操作中,我们经常需要将一个表中的数据迁移或复制到另一个表中。这时候,INSERT INTO SELECT语句就成为了一个极其有用的工具。今天我们就来深入探讨这个强大的SQL语句。

基本语法

INSERT INTO 目标表(字段1, 字段2, ...)
SELECT 字段1, 字段2, ...
FROM 来源表
WHERE 条件;

这个语句的基本功能是从来源表中选择符合条件的数据,并将其插入到目标表中。

使用场景

  1. 数据备份:将生产表的数据备份到历史表
  2. 数据归档:将旧数据从主表移动到归档表
  3. 数据转换:在插入时对数据进行转换或计算
  4. 表结构变更:将数据从旧表结构迁移到新表结构

实际案例

案例1:简单数据复制

-- 将员工表中所有市场部的员工复制到市场部专用表
INSERT INTO market_employees(employee_id, name, position)
SELECT id, full_name, job_title
FROM employees
WHERE department = 'Marketing';

案例2:带数据转换的插入

-- 将订单数据插入统计表,同时计算订单总价
INSERT INTO order_stats(order_id, customer_id, total_amount, order_date)
SELECT order_id,customer_id,quantity * unit_price * (1 - discount) AS total,order_date
FROM orders
WHERE order_date >= '2023-01-01';

案例3:多表联合插入

-- 从多个表中组合数据插入到新表
INSERT INTO customer_orders(customer_name, order_count, total_spent)
SELECT c.name,COUNT(o.order_id),SUM(o.amount)
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
GROUP BY c.id, c.name;

注意事项

  1. 字段匹配:确保SELECT返回的字段数量、顺序和类型与目标表定义匹配
  2. 主键冲突:如果目标表有主键或唯一约束,需处理可能的重复数据
  3. 性能考虑:大数据量操作可能影响性能,建议在低峰期执行
  4. 事务控制:大操作应放在事务中,以便出错时可以回滚

高级技巧

只插入不存在的记录

INSERT INTO target_table(id, name)
SELECT id, name
FROM source_table s
WHERE NOT EXISTS (SELECT 1 FROM target_table t WHERE t.id = s.id
);

批量插入优化

对于大量数据,可以分批插入:

-- 每次插入10000条
INSERT INTO large_target(...)
SELECT ... FROM large_source
WHERE conditions
LIMIT 10000 OFFSET 0;

总结

INSERT INTO SELECT语句是SQL中极其强大的数据操作工具,它结合了数据查询和数据插入的功能,能够高效地完成各种数据迁移和转换任务。掌握这个语句可以大大提高数据库操作的效率和灵活性。

在实际工作中,根据具体场景合理使用这个语句,可以简化很多复杂的数据处理流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/86680.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/86680.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/86680.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

elementUI轮播图组件el-carousel适配移动端大小(图片加载好后根据大小适配)

获取img实例&#xff0c;动态设置el-carousel高度 <template><div class"content main"><el-carousel arrow"always" :height"bannerHeight px"><el-carousel-item v-for"(item, index) in banners" :key"…

AI歌手Yuri出道:GenAI,透露着新的AI产业机遇?

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、AI歌手Yuri横空出世1. 爆红的原生MV《SURREAL》2. 背后的创作团队 二、AI歌手背…

常见的自动化测试工具,好学吗?

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。它通常涉及预设测试用例&#xff0c;并通过自动化工具或脚本来执行这些用例&#xff0c;最后比较实际结果与期望结果来评估软件的正确性。 常见的自动化测试工具包括Selenium、Appium、JMeter、LoadRunner、Post…

JavaEE初阶第四期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(二)

专栏&#xff1a;JavaEE初阶起飞计划 个人主页&#xff1a;手握风云 目录 一、Thread类及常用方法 2.1. Thread的常见构造方法 2.2. Thread的常见属性 2.3. 启动一个线程 2.4. 中断一个线程 2.5. 等待一个线程 2.6. 休眠当前线程 一、Thread类及常用方法 2.1. Thread的…

elk+filebeat收集springboot项目日志

目录 步骤 1: 安装和配置Elasticsearch 步骤 2: 安装和配置Logstash&#xff08;可选&#xff09; 步骤 3: 安装和配置Filebeat 步骤 4: 安装和配置Kibana 要使用ELK&#xff08;Elasticsearch, Logstash, Kibana&#xff09;堆栈和Filebeat来收集Spring Boot项目的日志&am…

基于Python实现(控制台)UDP传输协议的可靠文件传输工具

LFTP Design 简介 LFTP是一个采用python3实现的基于UDP传输协议的可靠文件传输工具 特点 基于UDP 采用python3编程语言&#xff0c;socket的类型均为socket(AF_INET,SOCK_DGRAM)实现 实现100%可靠性传输 使用SR&#xff08;选择重传&#xff09;协议保证所有报文都正确接收…

【Go-7】面向对象编程

7. 面向对象编程 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种编程范式&#xff0c;通过将数据和行为封装在对象中&#xff0c;以提高代码的可重用性、可维护性和扩展性。虽然Go语言不像传统的OOP语言&#xff08;如Java、C&am…

PHP语法基础篇(六):数组

PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型针对多种不同用途进行了优化&#xff1b;它可以被视为数组、列表&#xff08;向量&#xff09;、哈希表&#xff08;映射的实现&#xff09;、字典、集合、堆栈、队列等等。本篇文章将记录数…

GitHub Actions 的深度解析与概念介绍

GitHub Actions 核心定义 Git Actions 是 GitHub 原生提供的 自动化工作流引擎&#xff0c;允许开发者在代码仓库中直接创建、测试、部署代码。其本质是通过事件驱动&#xff08;Event-Driven&#xff09;的自动化管道&#xff0c;将软件开发中的重复任务抽象为可编排的流程。…

TestCafe 全解析:免费开源的 E2E 测试解决方案实战指南

在2025年的数字化浪潮中&#xff0c;Web应用的稳定性和用户体验成为企业竞争的关键&#xff0c;而端到端&#xff08;E2E&#xff09;测试则是确保质量的“守护者”&#xff01;想象一下&#xff0c;您的电商平台因表单错误导致用户流失&#xff0c;或者支付流程因浏览器兼容性…

[CVPR 2025] 高效无监督Prompt与偏好对齐驱动的半监督医学分割

CVPR 2025 | 优化SAM&#xff1a;高效无监督Prompt与偏好对齐驱动的半监督医学分割 论文信息 标题&#xff1a;Enhancing SAM with Efficient Prompting and Preference Optimization for Semi-supervised Medical Image Segmentation作者&#xff1a;Aishik Konwer, Zhijian…

【C++】责任链模式

目录 一、模式核心概念与结构二、C++ 实现示例:员工请假审批系统三、责任链模式的关键特性四、应用场景五、责任链模式与其他设计模式的关系六、C++ 标准库中的责任链模式应用七、优缺点分析八、实战案例:Web 请求过滤器链九、实现注意事项如果这篇文章对你有所帮助,渴望获得…

dp进阶,树形背包(dfs+01)

顾名思义&#xff0c;就是在对树进行搜索的时候&#xff0c;由于限制了子节点选根节点必选和节点数限制&#xff0c;所以需要额外利用背包来维护最大值 假设根节点就是0&#xff0c;我们很容易 发现&#xff0c;这就是一个正常的树求和&#xff0c;但是限制了节点数量&#xf…

微信小程序安卓手机输入框文字飘出输入框

最近在开发微信小程序遇到一个问题&#xff0c;安卓手机输入框文字飘出输入框&#xff0c;但是ios系统的手机则正常。 使用情景&#xff1a;做了一个弹窗&#xff0c;弹窗内是表单&#xff0c;需要填写一些信息&#xff0c;但是在填写信息时光标不显示&#xff0c;输入的内容飘…

3 大语言模型预训练数据-3.2 数据处理-3.2.2 冗余去除——3.后缀数组(Suffix Array)在大模型数据去重中的原理与实战

后缀数组&#xff08;Suffix Array&#xff09;在大模型数据去重中的原理与实战 一、后缀数组的核心原理与数据结构二、后缀数组去重的核心流程1. **文档预处理与合并**2. **构建后缀数组**3. **计算最长公共前缀&#xff08;LCP&#xff09;数组**4. **基于LCP检测重复文档** …

数据库外连接详解:方式、差异与关键注意事项

&#x1f504; 数据库外连接详解&#xff1a;方式、差异与关键注意事项 外连接用于保留至少一个表的全部行&#xff0c;即使另一表无匹配记录。以下是三种外连接方式的深度解析&#xff1a; &#x1f50d; 一、外连接的三种类型 1. 左外连接 (LEFT OUTER JOIN) 作用&#xf…

vscode把less文件生成css文件配置,设置生成自定义文件名称和路径

1.下载less插件 在插件市场搜索 less 2.设置生成配置 3.修改out属性 "less.compile": {"compress": false, // 是否删除多余空白字符 一行显示[压缩]"sourceMap": false, // 是否创建文件目录树&#xff0c;true的话会自动生成一个 .css.map …

探索相机成像的奥秘 - 齐次坐标、径向失真和图像传感器倾斜

引言 大家好&#xff01;今天我们将一起探索相机成像背后的一些关键技术概念&#xff1a;齐次坐标、径向失真和图像传感器倾斜。这些概念对于理解相机如何捕捉和处理图像至关重要。我们将通过简单易懂的语言和严谨的公式来详细解释这些概念。 齐次坐标&#xff08;Homogeneou…

校企协同育人,智慧养老实训基地助力人才就业无忧

随着我国人口老龄化程度不断加深&#xff0c;智慧养老产业蓬勃发展&#xff0c;对专业人才的需求日益迫切。校企协同打造智慧养老实训基地&#xff0c;成为解决人才供需矛盾、提升人才培养质量的重要途径。通过科学的建设方案&#xff0c;智慧养老实训基地能够为学生提供实践平…

从需求到落地:一个AI训练平台的售前全流程复盘

目录 一、项目背景:客户要建自己的AI训练平台 二、需求梳理三板斧:并发量、存储带宽、模型种类 1. 并发训练量 2. 存储带宽需求 3. 模型类型与参数规模 三、解决方案设计:GPU选型 + 高速网络 + 存储架构 ✅ GPU服务器选型 ✅ 网络与通信架构 ✅ 存储与数据缓存 四…