MySQL 从一个表中查出数据并插入到另一个表处理方案(详细)

2023-10-20 06:20

本文主要是介绍MySQL 从一个表中查出数据并插入到另一个表处理方案(详细),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PS:来源表:t_source、目标表:t_target

第一种
来源表和目标表字段完全一致

insert into t_target  select * from t_source;

第二种
来源表和目标表字段部分一致,只想导入来源表部分字段到目标表

insert into t_target(字段1,字段2,字段3, ...)  
select 字段1,字段2,字段3, ... from t_source;

第三种
只需要导入目标表中不存在的数据

insert into t_target (字段1, 字段2, ...)  
 SELECT 字段1, 字段2, ...  FROM t_source  
 WHERE not exists (select * from t_target 
 where t_target.比较字段 = t_source.比较字段); 

下面是一个完整的示例,展示了如何将一张名为 source_table 的源表的数据更新到一张名为 target_table 的目标表:

-- 创建目标表
CREATE TABLE target_table (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT
);

-- 确定连接条件
ALTER TABLE target_table ADD COLUMN source_table_id INT;

UPDATE target_table
SET source_table_id = source_table.id
FROM target_table
INNER JOIN source_table
ON target_table.name = source_table.name;

-- 更新数据
UPDATE target_table
INNER JOIN source_table
ON target_table.source_table_id = source_table.id
SET target_table.age = source_table.age;

以上是一个简单的示例,你可以根据实际情况进行修改和扩展。

总结
通过以上步骤,我们可以将一张表的数据更新到另一张表。首先,我们需要创建一个目标表来接收数据,然后确定源表和目标表之间的连接条件,最后使用 UPDATE 语句将数据更新到目标表。
 

 

MySQL查询结果复制到新表的方法(更新、插入)

MySQL中可以将查询结果复制到另外的一张表中,复制的话通常有两种情况,一种是更新已有的数据,另一种是插入一条新记录。下面通过例子来说明。首先构建两个测试表。

表t1:

查看图片

表t2:

查看图片

1、如果t2表中存在score值,将score更新到t1表中。方法如下:

UPDATE t1,t2
SET t1.score = t2.score
WHERE t1.id = t2.id AND t2.score IS NOT NULL

这就是将查询结果作为条件更新另一张表,当然,t2也可以是更为复杂的一个查询结果而不是一个具体的表。

2、将t1表的username更新至t2表,将t2表的score更新至t1表。方法如下:

UPDATE t1,t2
SET t1.score = t2.score,t2.username = t1.username
WHERE t1.id = t2.id

这个方法其实跟上面的方法类似,可以同时更新两个表的数据,即做表部分数据的互相复制、更新。

3、将t2表的查询结果插入到t1表中。方法如下:

INSERT INTO t1(id,username,score)
SELECT t2.id,t2.username,t2.score FROM t2 where t2.username = 'lucy'

前面两种方式是更新表的记录,这种方式是插入一条新的记录。其实,从脚本可以看出,这个方法就是将查询和插入两个步骤合二为一。

用一个表更新另一个表

1、更新一个字段
方法一
   update table1 set field1=table2.field1 from table2
    where table1.id=table2.id

方法二
将两张表以内连接的方式进行查询更新

 UPDATE tableName1 t1
    LEFT JOIN tableName2 t2 ON t2.id = t1.id 
    SET t1.lpEntityType2 = t2.lpEntityType2 

方法三
update A m,B mp set m.job_type = mp.job_type where mp.mobile= m.mobile;

2、更新多个字段
方法一
   update B, A
    set 
        B.username = A.username,
        B.phone = A.phone
    where 
        B.userId = A.userId

方法二
将两张表以内连接的方式进行查询更新

update 
    B join A on B.userId=A.userId
set 
    B.username = A.username,
    B.phone = A.phone 
 

MYSQL 更新一个表字段为另外一张表字段

1、UPDATE m_node_device mnd SET mnd.enterprise_id = (SELECT md.enterprise_id FROM m_device md WHERE mnd.device_id = md.id)

2、--     更新表字段为查询结果中的某一个字段
UPDATE m_device md,
(
SELECT
    mi.img_url AS aa,
    mi.device_id AS bb 
FROM
    m_device_img mi
    INNER JOIN m_device_type_attr ma ON ma.id = mi.device_type_attr_id 
WHERE
    ma.attr_name = '设备铭牌' 
    ) b 
    SET md.nameplate_img = b.aa 
WHERE
    md.id = b.bb 
    AND md.nameplate_img = '' and md.is_deleted = 0
 

这篇关于MySQL 从一个表中查出数据并插入到另一个表处理方案(详细)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/245243

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri