mySql,Pgsql,kingbase连表更新
原文链接: https://www.jianshu.com/p/0df5797f7b73
Table a:
id | 主键
code | 编码
Table b:
id | 主键
aId | 关联a表id
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 | 关联main表id
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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2020-01-17 LVS负载均衡工作模式和调度算法