sql update set from 的用法 (转)

PostgreSQL两表联合更新实战:update set from语法详解(附常见错误排查) 本文详细解析了PostgreSQL中UPDATE SET FROM语法,用于高效实现两表联合更新。通过基础与进阶示例,深入讲解其工作原理、多表关联及子查询应用,并重点提供了常见错误(如笛卡尔积、NULL值处理)的排查方法与性能优化建议,帮助开发者安全、精准地完成跨表数据同步。 阅读详情

转:http://www.cnblogs.com/zhang9418hn/archive/2012/03/21/2409551.html

 

关键字: update set from

 下面是这样一个例子:

 两个表a、b,想使b中的memo字段值等于a表中对应id的name值  
  表a:id, name  
            1       王  
            2       李  
            3       张  
  表b:id,ClientName   
            1        
            2  
            3  
(MS SQL Server)语句:update   b  set   ClientName   =   a.name   from   a,b   where   a.id   =   b.id  

(Oralce)语句:update   b  set   (ClientName)   =  (SELECT name FROM a WHERE b.id = a.id)

update set from 语句格式

当where和set都需要关联一个表进行查询时,整个update执行时,就需要对被关联的表进行两次扫描,显然效率比较低。
对于这种情况,Sybase和SQL SERVER的解决办法是使用UPDATE...SET...FROM...WHERE...的语法,实际上就是从源表获取更新数据。

在 SQL 中,表连接(left join、right join、inner join 等)常常用于 select 语句,其实在 SQL 语法中,这些连接也是可以用于 update 和 delete 语句的,在这些语句中使用 join 还常常得到事半功倍的效果。

Update T_OrderForm SET T_OrderForm.SellerID =B.L_TUserID
FROM T_OrderForm A LEFT JOIN T_ProductInfo   B ON B.L_ID=A.ProductID

用来同步两个表的数据!

Oralce和DB2都支持的语法:

UPDATE A  SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)

MS SQL Server不支持这样的语法,相对应的写法为:
UPDATE A  SET A1 = B1, A2 = B2, A3 = B3  FROM A LEFT JOIN B ON A.ID = B.ID

个人感觉MS SQL Server的Update语法功能更为强大。MS SQL SERVER的写法:
UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A, B WHERE A.ID = B.ID

在Oracle和DB2中的写法就比较麻烦了,如下:

UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)

sql server的 update from 语句的深究 一般来说update一个表, 使用where语句即可: 代码如下: UPDATE Ttest SET     statusInd = ‘ACTIVE’  WHERE     id = 123 注意: update 语句后面的table名称,是不可以启用别名的。 那么此时的id字段,就是来自Ttest表的(无可厚非) 但是,如果update,还有额外的join table 条件约束,语句如下: 代码如下: UPDATE Ttest SET     statusInd = ‘ACTIVE’ FROM     Tparent parent WHERE     Ttest.id = 123 AN 立即下载

相关推荐

FPGA高速接口Aurora8B/10B协议实战:从IP核配置到数据流优化

本文详细介绍了FPGA高速接口Aurora8B/10B协议的实战应用,从IP核配置到数据流优化的全流程。通过Aurora8B/10B协议,开发者可以在FPGA间实现高效的数据传输,适用于高速接口设计。文章涵盖了协议基础、IP核配置、AXI4-Stream接口实战技巧以及性能优化策略,帮助读者快速掌握这一关键技术。

weixin_29280657的博客 268

sql更新语句中update set from用法

        执行一般的sql更新语句为update table_name set column_name=value where column_name1=value1;但是我们有时候需要将某个表用的字段根据两个表中相关字段更新为另一个表中某个字段的数据,即a表中主键aid在b表中有个外键bid相关,b表中字段b需要根据a、b表对应id更新为a表中字段c的数据,如果根据以上的sql一条一条的更...

zeternityyt的博客 30万+

基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第一篇)安装调试

基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼调试 本文内容大部分来自Kris,我们的K大,在VTOL领域的大牛,在此,非常感谢K大。能引用K大的成果也是自己的荣幸,不便之处还请K大多多包涵,在此引用只是为方便自己日常学习,部分参数表里根据自身情况,增加了相应参数。 1.安装及下载Ardupilot官方固件: VTOL固件的来源可分为Ardupilot官方固...

u011322358的博客 3万+

关于update set from,第一次碰到,汗!

下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:id,name 1 王 2 李 3 张 表b:id,ClientName 1 2 ...

weixin_30650039的博客 1039

3GPP协议解读_物理层系列(一)_物理层协议怎么看?

5G NR相关协议一般都在38系列,点进去以后可以看到,38.2xx系列为物理层相关协议,为了掌握物理层相关知识,应该怎么看协议呢?我建议从38.201读起,对38.2xx系列协议有一个整体的把握。

JCMLSY的博客 1328

T型三电平关管顺序要求

摘要: T型三电平拓扑中,IGBT关断必须遵循“外管先关、内管后关”的时序,否则易导致器件损坏。正常导通时,外管与内管共同分担电压;正确关断时,外管先关使电流经内管续流至中点,避免电压过冲;若内管先关,电流路径被强制切断,杂散电感引发高压尖峰击穿器件。这一时序本质是为电流提供低应力续流路径,需通过硬件或软件严格保障。

yun0804的博客 2375

数据库之SQL更新语句中update set from用法

执行一般的sql更新语句为update table_name set column_name=value where column_name1=value1;但是我们有时候需要将某个表用的字段根据两个表中相关字段更新为另一个表中某个字段的数据,即a表中主键aid在b表中有个外键bid相关,b表中字段b需要根据a、b表对应id更新为a表中字段c的数据,如果根据以上的sql一条一条的更新会非常浪费时间...

weixin_40594160的博客 1万+

最全的Hermes安装教程以及Hermes WebUI安装部署和配置指南

* 直接执行命令**

小石头的专栏 1074

sql update set from 的用法 (转)

关键字: update set from 下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:id, name 1 王 2 李 3 张 表b:id,ClientName...

154

嵌入式STM32F407CET6移植OpenHarmony系统方法

文件末尾添加:export PATH=~/gcc-arm-none-eabi-10-2020-q4-major/bin:$PATH。编译完成文件输出在LiteOs源码目录下out/STM32F407_ATK_Explorer文件夹中。②点击connect to the target,下方会自动显示识别出来的芯片型号以及flash大小。⑤点击program verify并点击start,等待烧写并校验完成,你就能看到程序正在运行了。,在选择刚才我们说的Huawei_LiteOS.hex文件。

嵌入式技术开发 546

基于AI的智能开发环境—Trae在Web开发中的应用实战与性能评估【Trae项目实战】

Trae 是一款与 AI 深度集成的开发工具,提供智能问答、代码自动补全和基于 Agent 的 AI 自动编程能力,极大提升开发效率。它具备完备的 IDE 功能,如代码编写、项目管理和源代码管理等,同时还具备强大的 AI 助手,能够提供智能问答、实时代码建议、代码片段生成等服务。开发者可以通过自然语言与 AI 协作,从 0 到 1 开发项目,AI 会根据需求自动生成代码或创建文件。

一键难忘的博客 3万+

14、SQL Server:sql update set from 的用法 (转)

本文来自:http://www.cnblogs.com/zhang9418hn/archive/2012/03/21/2409551.html 下面是这样一个例子:  两个表a、b,想使b中的memo字段值等于a表中对应id的name值      表a:id, name                1       王                2       李   

xushaozhang的专栏 2954

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

update set from 语句用法

关键字: update set from 下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:id, name 1 王 2 李 3 张 表b:id,ClientName 1 2 3 (MS SQL Server)语句:u...

qq_35978699的博客 2389

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SqlServer_update set from的用法整理

update set from 常用格式: ---不使用别名 UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A LEFT JOIN B ON A.ID = B.ID --使用别名 UPDATE v1 SET A1 = B1, A2 = B2, A3 = B3 FROM A as v1 LEFT JOIN B ON v1.ID = B.ID...

☆╮123☆ 1479

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

oracle update set from,oracle 中update set from 话语格式【转】

oracle 中update set from 语句格式【转】两个表a、b,想使b中的memo字段值等于a表中对应id的name值表a:id,name1 王2 李3 张表b:id,ClientName123(MS SQL Server)语句:update b set ClientName = a.name from a,b wher...

weixin_39814482的博客 3171

SQL跨表更新入门:图解UPDATE SET FROM语法

但别担心,今天我们就用最通俗的方式,通过学生表和成绩表的例子,一步步掌握UPDATE SET FROM这个实用语法。关键是要理清表之间的关系,先想清楚逻辑再写SQL。现在来个小测试:假设我们要把2班所有数学成绩高于80分的学生的班级改为'优秀班',该怎么写这个UPDATE语句?首先要知道,UPDATE SET FROM用于根据另一个表的数据来更新当前表。新手常犯的错误是条件逻辑混乱,导致更新了不该更新的记录。现在需求复杂一点:给1班的数学成绩加5分,同时给2班的语文成绩加3分。在实际操作中,我发现。

AmberLeopard26的博客 733

关于update set from where

关于update set from where   下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值      表a:id,name                1       王                2       李                3       张      表b:id,ClientName              ...

ficphoto的专栏 7483

update set from where 用法

两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:id,name 1 王 2 李 3 张 表b:id,ClientName 1 2 3 (MS SQL Server) 语

人生有酒多忘欢 1万+
上一篇: 查看SybaceIQ字符集
下一篇: sybase字符串函数
cg_program
博客等级 码龄19年 245粉丝 147原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值