MySQL中Update与Select结合使用的多种方式详解

代码之手 2025-01-12 11:52:22编程技术
584

在数据库管理中,数据的更新和选择是两个非常常见的操作。MySQL 提供了多种方式将UPDATE和SELECT语句结合使用,以实现从一个表中选择数据并更新另一个表中的记录。这种操作在数据同步、数据迁移和批量更新等场景中非常有用。本文将详细介绍几种常见的结合使用UPDATE和SELECT的方法,包括内连接、子查询和笛卡尔积,并提供具体的 SQL 语句示例,帮助读者更好地理解和应用这些技术。

    mysql update和select结合使用

    在遇到需要update设置的参数来自从其他表select出的结果时,需要把update和select结合使用,不同数据库支持的形式不一样

    在mysql中如下:

    update A inner join(select id,name from B) c on A.id = c.id set A.name = c.name;

    根据AB两个表的id相同为条件,把A表的name修改为B的sql语句就如上所示

    sql批量更新update嵌套select更新

    概述

    有两张表【user】和【city】,user表的 city_uuid city_no 和 city 表的 city_uuid city_no 一一对应,但是 user 表只有 city_uuid ,这时候需要将 city 对应的 city_no 批量更新到 user 表中

    MySQL中Update与Select结合使用的多种方式详解

    MySQL中Update与Select结合使用的多种方式详解

    批量更新方式

    第一种方式(inner join 内连接)

    update u
    set u.city_no = c.city_no
    from user u 
    inner join city c 
    on u.city_uuid = c.city_uuid
    where u.city_uuid is not null and u.city_no is null

    第二种方式(子查询)

    update u
    set u.city_no = (select c.city_no from city c where u.city_uuid = c.city_uuid)
    from user u

    第三种方式:(笛卡尔积)

    update u
    set u.city_no = c.city_no  
    from [user] u, city c 
    where u.city_uuid = c.city_uuid

    update 多表更新

    update table1 t1,table2 t2, table3 t3, ... , tablen tn
    set t1.column= ?, t2.column, t3.column = ?, ... , tn.column = ?
    where t1.xx= ?, t2.xx = ?, ... , tn.xx = ?

    案例:(conditionUuid是user表的外键,每个conditionUuid对应两条user记录,将producter记录覆盖consumer记录的指定字段值)

    update r2
    set r2.userUuid = r1.userUuid, r2.userName = r1.userName , r2.age = r1.age, r2.updatedTime = '2021-02-22 22:22:22.222'
    from user r1
    inner join user r2
    on r1.conditionUuid = r2.conditionUuid
    where r1.conditionValue = 'condition-consumer-00000000000000000' and r1.userName is not null
    and r2.conditionValue = 'condition-producter-0000000000000000' and r2.userName is not null

    总结

    本文详细介绍了在 MySQL 中如何结合使用UPDATE和SELECT语句,以实现从一个表中选择数据并更新另一个表中的记录。我们探讨了多种批量更新的方法,包括内连接、子查询和笛卡尔积,并提供了具体的 SQL 语句示例。此外,还介绍了一个多表更新的案例,展示了如何将一个表中的数据覆盖到另一个表中的指定字段。通过这些方法,读者可以更灵活地进行数据操作,提高数据管理和维护的效率。希望本文对读者在实际工作中有所帮助。

    mysql update select
    THE END
    蜜芽
    故事不长,也不难讲,四字概括,毫无意义。

    相关推荐

    如何在 MySQL 中实现定时任务?Event Scheduler 全攻略
    MySQL 自5.1.6版本起内置的 Event Scheduler(事件调度器) 功能,允许直接在数据库层面实现定时任务调度,无需依赖外部工具如Cron或Quartz。本文ZHANID工具网将系统梳理Even...
    2025-09-15 编程技术
    529

    Java 与 MySQL 性能优化:MySQL全文检索查询优化实践
    本文聚焦Java与MySQL协同环境下的全文检索优化实践,从索引策略、查询调优、参数配置到Java层优化,深入解析如何释放全文检索的潜力,为高并发、大数据量场景提供稳定高效的搜...
    2025-09-13 编程技术
    505

    Java与MySQL数据库连接实战:JDBC使用教程
    JDBC(Java Database Connectivity)作为Java标准API,为开发者提供了统一的数据访问接口,使得Java程序能够无缝连接各类关系型数据库。本文ZHANID工具网将以MySQL数据库为例...
    2025-09-11 编程技术
    495

    MySQL数据类型使用场景详解:INT、VARCHAR、DATE、TEXT等核心类型实战指南
    在MySQL数据库设计中,数据类型的选择直接影响存储效率、查询性能和数据完整性。本文ZHANID工具网聚焦INT、VARCHAR、DATE、TEXT等常用数据类型,通过存储特性对比、典型应用场...
    2025-09-11 编程技术
    492

    MySQL基础语法大全:SELECT、INSERT、UPDATE、DELETE使用详解
    MySQL作为最流行的开源关系型数据库管理系统,其核心操作围绕数据增删改查(CRUD)展开。本文ZHANID工具网将系统解析SELECT、INSERT、UPDATE、DELETE四大基础语句的语法规范、...
    2025-09-09 编程技术
    494

    MySQL修改字段长度提示“Too large column size”怎么办?
    当尝试修改MySQL字段长度时遇到“Too large column size”错误,通常是由于字段长度超过MySQL引擎限制或索引约束导致。本文ZHANID工具网将系统梳理错误原因、诊断方法及解决方...
    2025-09-08 编程技术
    496