mysql sql 关联更新数据库表_SQL基础10:update单表、多表联合更新||mysql、sqlserver、oracle、db2...

本文详细介绍了SQLSERVER、ORACLE、DB2和MYSQL数据库中UPDATE语句的使用方法,包括单表更新和多表联合更新的实例,帮助理解不同数据库系统的更新操作。
摘要由CSDN通过智能技术生成

23964106cd0e?utm_campaign=haruki

image.png

目录:

一、SQLSERVER

二、ORACLE

三、DB2

四、MYSQL

一、SQLSERVER中UPDATE使用方法

我们先看一下SQLSERVER中的UPDATE语法

单表更新

方法1:

update a set a.telephone=b.telephone

from table2 a

inner join table1 b on a.joid_id=b.user_id

多表联合更新

方法2:

update table2

set telephone=a.telephone

from table1 a

WHERE table2.joid_id=a.user_id

下面提供两个案例:

01将SFDB字段中的空字符串更改为NULL值

update HLSDZ_PJJG

set SFDB = null

where SFDB =''

update YWWATER.HLSZPJJG_LJ

set UPDATETIME = getdate()

where POINTCODE = 'HLBM_57' and NF = '2019' AND YF = '10'

23964106cd0e?utm_campaign=haruki

23964106cd0e?utm_campaign=haruki

01-执行后结果

02更新A表10月POINTNAME字段。

分析:A表中有10月之前的数据,这里只更新10月的数据,以前月份的数据不更新。

关联条件,字段相同的才进行更新

update a set a.POINTNAME=b.POINTNAME

from

(select * from YWWATER.HLSZPJJG_LJ where NF = '2019' AND YF = '10')A

inner join

(SELECT DISTINCT SX,HL,SHI,POINTCODE,POINTNAME,DMMC FROM YWWATER.HLSZPJJG_LJ WHERE POINTCODE IS NOT NULL AND SX IS NOT NULL)b

on a.SX = B.SX AND A.HL = B.HL AND A.SHI = B.SHI AND A.DMMC = B.DMMC

23964106cd0e?utm_campaign=haruki

23964106cd0e?utm_campaign=haruki

23964106cd0e?utm_campaign=haruki

二、ORACLE中UPDATE使用方法

我们先看ORACLE中UPDATE的语法,和sqlserver的语法类

单表更新

方法一:

UPDATE 表名称

SET 字段 1=值 1,字段 2=值 2,...

[WHERE 更新条件(s)]

方法二:

update student

set (sname, sage, sbirthday, saddress) =

(select '李四', 20, to_date('2010-01-01', 'yyyy-mm-dd'), '广州市越秀区' from dual)

where sid = 1

多表更新

方法三:

update 表名称 a

set (字段1,字段2) =

(select POINTCODE,POINTNAME from 表名称B

where a.字段 = B.字段 AND A.字段 = B.字段)---A表和B 表的关联关系

where a.NF = '2019' and A.YF = '10'---更新A 表中的部分内容

举两个例子

01将POINTCODE,POINTNAME字段中的内容变为空值

UPDATE YWWATER.HLSZPJJG_LJ

SET POINTCODE = NULL,POINTNAME = NULL

WHERE NF = '2019' AND YF = '10'

02 更新POINTCODE,POINTNAME字段

分析:更新A表中的字段,并且A表和B 表能关联上的字段才更新

更新A表中的部分数据

update YWWATER.HLSZPJJG_LJ a

set (POINTCODE,POINTNAME) =

(select POINTCODE,POINTNAME from

(SELECT DISTINCT SX,HL,SHI,POINTCODE,POINTNAME,DMMC FROM YWWATER.HLSZPJJG_LJ WHERE POINTCODE IS NOT NULL AND SX IS NOT NULL)B

where a.SX = B.SX AND A.HL = B.HL AND A.SHI = B.SHI AND A.DMMC = B.DMMC)

where a.NF = '2019' and A.YF = '10'

三、DB2中UPDATE使用方法

DB2数据库中UPDATE使用方法和ORACLE中几乎时一样的。

我们先看DB2中UPDATE语法

单表更新

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)

多表更新

UPDATE YWWATER.HLSZPJJG_LJ A SET (POINTCODE,POINTNAME)=

(SELECT B.POINTCODE_SJZX,B.POINTNAME_SJZX FROM YWWATER.T_ENV_MANUAL_WATERPOINTINFO_SC B

WHERE A.DMMC=B.POINTNAME AND A.HL=B.WATERNAME

)

WHERE POINTCODE IS NULL

四、MYSQL中UPDATE使用方法

单表更新

UPDATE coursers

SET cname = 'TEST',tno = '99999'

where cno = '3106'

23964106cd0e?utm_campaign=haruki

单表更新1

23964106cd0e?utm_campaign=haruki

单表更新2

多表更新

UPDATE coursers a JOIN

(select '3105' cno,'82222'tno,'YINGYU' cname) b

ON a.cno = b.cno

SET a.tno=b.tno,a.cname=b.cname

go

23964106cd0e?utm_campaign=haruki

多表更新1

23964106cd0e?utm_campaign=haruki

多表更新2

案例都是我工作中使用到,UPDATE的使用方法就介绍到这里了,想了解更详细可以百度

后记:因为我经常接触各种数据库,遇见复杂的陌生的函数要折腾很久,各种百度,各种测试,最关键的是我害怕把数据库的数据弄错了……所以啦,要养成数据库备份的习惯

20190709的时候写了这篇文章,工作需要、在sqlserver中更新两个字段,用了2个小时才把那条更新语句写出来。想想主要有两个因素:不熟悉语法,不了解业务关系不知道关联哪几个字段……所以当时写这条语句的时候真的非常累,最后完成本篇文章是在20191124,方便以后自己查找,也给其他小伙伴提供方便吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值