mysql中update和select结合使用方式

 更新时间:2023年08月29日 14:24:49   作者:代码之手  
这篇文章主要介绍了mysql中update和select结合使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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 表中

批量更新方式

第一种方式(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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于skip_name_resolve参数的总结分享

    关于skip_name_resolve参数的总结分享

    下面小编就为大家带来一篇关于skip_name_resolve参数的总结分享。小编觉得挺不错的,现在分享给大家。给大家一个参考。一起跟随小编过来看看吧
    2016-03-03
  • MySQL的Flush-List和脏页的落盘机制

    MySQL的Flush-List和脏页的落盘机制

    这篇文章主要介绍了MySQL的Flush-List和脏页的落盘机制,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
    2020-11-11
  • MySQL性能分析及explain的使用说明

    MySQL性能分析及explain的使用说明

    本文我们主要介绍了MySQL性能分析以及explain的使用,包括:组合索引、慢查询分析、MYISAM和INNODB的锁定、MYSQL的事务配置项等,希望能够对您有所帮助。
    2011-08-08
  • MySql查询中按多个字段排序的方法

    MySql查询中按多个字段排序的方法

    在SQL查询中,经常需要按多个字段对结果进行排序,本文主要介绍了MySql查询中按多个字段排序的方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • MySQL进行大数据量分页的优化技巧分享

    MySQL进行大数据量分页的优化技巧分享

    mysql大数据量分页情况下性能会很差,所以本文就来讲一讲mysql大数据量下偏移量很大,性能很差的问题,并附上解决方式,希望对大家有所帮助
    2024-01-01
  • MySQL 安装配置超完整教程

    MySQL 安装配置超完整教程

    MySQL 是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典 MySQL AB公司开发,目前属于Oracle公司旗下产品,这篇文章主要介绍了MySQL安装配置超完整教程,需要的朋友可以参考下
    2025-05-05
  • 解析SQL 表结构信息查询 含主外键、自增长

    解析SQL 表结构信息查询 含主外键、自增长

    本篇文章是对SQL 表结构信息查询 含主外键、自增长进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL 临时表的原理以及优化方法

    MySQL 临时表的原理以及优化方法

    这篇文章主要介绍了MySQL 临时表的原理以及优化方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • mysql8.0.11安装配置方法图文教程 MySQL8.0新密码认证方式

    mysql8.0.11安装配置方法图文教程 MySQL8.0新密码认证方式

    这篇文章主要为大家详细介绍了mysql8.0.11安装配置方法图文教程,以及MySQL8.0新密码认证方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 一文弄懂MySQL中redo log与binlog的区别

    一文弄懂MySQL中redo log与binlog的区别

    在学习mysql数据库时,不可避免要去接触到redo log和binlog,好多人对这两者的概念分不太清,下面这篇文章主要给大家介绍了关于MySQL中redo log与binlog区别的相关资料,需要的朋友可以参考下
    2022-02-02

最新评论