mySql,Pgsql,kingbase连表更新

原文链接: https://www.jianshu.com/p/0df5797f7b73
Table a:
    id   | 主键 
    code | 编码

Table b:
    id   | 主键 
    aId  | 关联aid
    code | 编码
    name | 名称

例,a、b表一对一,更新a表的code为b表code:

MySQL:

UPDATE a JOIN b ON a.id = b.aId SET a.code=b.code;
通用语法:
UPDATE table1 inner/left/right join table2/(select columns from table3  
        [inner/left/right join on condition]  [where conditions]) as t3
ON condition
SET column1 = value1,column2 = value2,...
[WHERE conditions]; 

PgSQL:

方法1.

UPDATE a SET code=b.code FROM b where a.id = b.aId;

方法2.较为灵活

UPDATE  a
SET     code = b.code
FROM    (
        SELECT  a.id, b.aId, b.code
        FROM    a
                INNER JOIN b  ON a.id = b.aId
        ) AS tb
WHERE   a.id = tb.id

更多例子:

Table main:
    id   | 主键 
    code | 编码

Table detail:
    id   | 主键 
    aId  | 关联mainid

detail表详情数据通过aId关联main表,将detail表的aId修改为对应的main表中以A开头的code中的数字

UPDATE detail 
SET aId = cast( SUBSTRING( tbs.code, E'([0-9]+)' ) AS INT8 ) 
FROM
    (
        SELECT
            b.id,b.aId, a.code
        FROM
            detail b 
            INNER join main a on a.id = b.aId
        WHERE
            a.code LIKE 'A%'  
    ) as tbs
where detail.id =tbs.id


posted @   枫树湾河桥  阅读(442)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2020-01-17 LVS负载均衡工作模式和调度算法
Live2D
欢迎阅读『mySql,Pgsql,kingbase连表更新』
西雅图
17°
22:03发布
西雅图
22:03发布
17°
西南风
3级
空气质量
相对湿度
46%
今天
多云
6°/17°
周五
多云
7°/15°
周六
6°/17°
点击右上角即可分享
微信分享提示