开发者

mysql中update和select结合使用方式

目录
  • mysql update和select结合使用
  • sql批量更新update嵌套select更新
    • 概述
    • 批量更新方式
    • update 多表更新
  • 总结

    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】python,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 内连接js)

    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, tandroidable3 t3, ...javascript , 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-javascriptconsumer-00000000000000000' and r1.userName is not null
    and r2.conditionValue = 'condition-producter-0000000000000000' and r2.userName is not null

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新数据库

    数据库排行榜