GVKun编程网logo

SQL update 多表关联更新的实现代码

19

关于SQLupdate多表关联更新的实现代码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于170823、SQLUpdate多表联合更新的方法、KSQL中Update多表级联更新的语法、M

关于SQL update 多表关联更新的实现代码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于170823、SQL Update 多表联合更新的方法、KSQL中Update多表级联更新的语法、Mysql update多表联合更新的方法小结、mysql关联多表进行update更新操作等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

SQL update 多表关联更新的实现代码

SQL update 多表关联更新的实现代码

实现多表更新,尤其是A表和A的子表B表数据更新,下面是例子

有A、B张表,其记录如下:

A表

c1 c2
--------------
1 a1
2 a2
3 a3
8 a8

B表

c1 c3
--------------
1 b1
2 b1
3 b3
10 b10

A.c1与B.c1相等,用一条sql语句,实现A.c2的值更新为B.c3
---------------------------------------------------------------------------------------

语句一

rush:sql;"> UPDATE A SET A.c2 =B.c3 from A,B where A.c1=B.c1

语句二

rush:sql;"> UPDATE A SET A.c2 =B.c3 from A inner join B on A.c1=B.c1

注意:

update后面是不能跟多表的,但跟在from子句后面

总结

以上所述是小编给大家介绍的sql update 多表关联更新的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小编网站的支持!

170823、SQL Update 多表联合更新的方法

170823、SQL Update 多表联合更新的方法

SQL Update多表联合更新的方法
(1) sqlite 多表更新方法
update t1 set col1=t2.col1
from table1 t1
inner join table2 t2 on t1.col2=t2.col2
这是一个非常简单的批量更新语句 在SqlServer中支持此语法 sqlite中却不支持

sqlite中可转换为 如下语法 
update table1 set col1=(select col1 from table2 where col2=table1.col2)

update ta_jbnt_tzhd_pht_Area_xiang set t1=(select sys_xzqhdm.name from sys_xzqhdm 
 where t2=sys_xzqhdm.code) 


(2) SQL Server 多表更新方法
SQL Server语法:UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) |
view_name | rowset_function_limited } SET { column_name = { expression | DEFAULT
| NULL } | @variable = expression | @variable = column = expression } [ ,...n ]
{ { [ FROM { < table_source > } [ ,...n ] ] [ WHERE < search_condition > ] } | [
WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } [
OPTION ( < query_hint > [ ,...n ] ) ]

SQL Server示例: update a set a.gqdltks=b.gqdltks,a.bztks=b.bztks from

landleveldata a,gdqlpj b where a.GEO_Code=b.lxqdm

access数据库多表更新方法

x = "update " + DLTB + " a inner join tbarea2 b  on a.objectid=b.FID  set a." + fd_dltb_xzdwmj + "=b.area_xzdw, a." + fd_dltb_lxdwmj + "=b.area_lxdw";
 SQLList.Add(x);

(3) Oracle 多表更新方法
Oracle语法: UPDATE updatedtable SET (col_name1[,col_name2...])= (SELECT
col_name1,[,col_name2...] FROM srctable [WHERE where_definition])


Oracel 示例: update landleveldata a set (a.gqdltks, a.bztks)= (select b.gqdltks,
b.bztks from gdqlpj b where a.GEO_Code=b.lxqdm)


(4) MySQL 多表更新方法
MySQL语法: UPDATE table_references SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]

MySQL 示例: update landleveldata a, gdqlpj b set a.gqdltks= b.gqdltks, a.bztks=
b.bztks where a.GEO_Code=b.lxqdm

 

KSQL中Update多表级联更新的语法

KSQL中Update多表级联更新的语法

Update XXX Set FXXX =  
( Select ①  
  From ... 
  Where ②) 
Where ③

Update里必须包括3个逻辑部分: 

a.) 在①里指明把字段更新为什么值,即新值. 
b.) 在②里指明待更新表和源表需要更新行之间的对应关系 
c.) 在③里指明待更新表有哪些记录需要更新 

注意: 写好updte 语句后需要在ksql中翻译一下,在oracle和db2下可能会多翻译出一些语句(可能包含参数?) ,这样会导致执行时报错: 
Caused exception message is: 索引中丢失  IN 或 OUT 参数:: 3 

比如:
UPDATE T_SD_SaleOrderEntry  
SET (FPreReceived, FUnPrereceivedAmount) =  
          (SELECT T_SD_SaleOrderEntry.FPreReceived + IsNull(rbe.FActualAmt, 0)   
               AS FPreReceived,   
               T_SD_SaleOrderEntry.FPrepayment - IsNull(rbe.FActualAmt, 0)   
               AS FUnPrereceivedAmount  
         FROM T_CAS_ReceivingBillEntry rbe  
         WHERE rbe.FSourceBillEntryId = T_SD_SaleOrderEntry.FID AND rbe.FReceivingBillID = "xxxx")  
WHERE T_SD_SaleOrderEntry.FID IN  
          (SELECT soe.FID  
         FROM T_SD_SaleOrderEntry soe, T_CAS_ReceivingBillEntry rbe  
         WHERE rbe.FSourceBillEntryId = soe.FID AND rbe.FReceivingBillID = "xxxx")

 

Mysql update多表联合更新的方法小结

Mysql update多表联合更新的方法小结

下面我建两个表,并执行一系列sql语句,仔细观察sql执行后表中数据的变化,很容易就能理解多表联合更新的用法

student表 class表

1. 执行 UPDATE student s , class c SET s.class_name=''test00'',c.stu_name=''test00'' WHERE s.class_id = c.id

student表 class表

2. 执行 UPDATE student s JOIN class c ON s.class_id = c.id SET s.class_name=''test11'',c.stu_name=''test11''

student表 class表

3. 执行 UPDATE student s LEFT JOIN class c ON s.class_id = c.id SET s.class_name=''test22'',c.stu_name=''test22''

student表 class表

4. 执行 UPDATE student s RIGHT JOIN class c ON s.class_id = c.id SET s.class_name=''test33'',c.stu_name=''test33''

student表 class表

5. 执行 UPDATE student s JOIN class c ON s.class_id = c.id SET s.class_name=c.name , c.stu_name=s.name

student表 class表

知识点补充:

mysql多表关联update

日常的开发中一般都是写的单表update语句,很少写多表关联的update。

不同于SQL Server,在MySQL中,update的多表连接更新和select的多表连接查询在使用的方法上存在一些小差异。

来看一个具体的例子。

update orders o
  left join users u
    on o.userId = u.id
set o.userName = u.name;

在上面的例子中,update关键字后跟的是一个多表关联的结果集,MySQL直接将这个多表关联的结果集看做一个单表,再在这个单表的基础上做常规的update操作。

和SQL Server的细小差别在于,SQL Server的set子句跟在要更新的具体表之后,MySQL的set语句则是跟在要更新的结果集之后(要更新的具体表在set语句中设置)。

总结

到此这篇关于Mysql update多表联合更新的方法小结的文章就介绍到这了,更多相关mysql update多表联合更新内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • Mysql跨表更新 多表update sql语句总结
  • mysql实现多表关联统计(子查询统计)示例
  • Mysql多表关联不走索引的原因及分析

mysql关联多表进行update更新操作

mysql关联多表进行update更新操作

mysql关联多表进行update更新操作


mysql关联多表进行update更新操作

UPDATE Track

INNER JOIN MV

ON Track.trkid=MV.mvid

SET Track.is_show=MV.is_show WHERE trkid<6 

等同于
UPDATE Track,MV

SET Track.is_show=MV.is_show

WHERE Track.trkid=MV.mvid and trkid<6

【扩展】 根据结果集进行update更新操作 原表信息 表1:am_favorites_4  

am_favorites_4

af_user_id

af_tag_id

af_content_id

af_content_type

374

0

535522

3

374

0

535522

3

374

89

535522

3

表2:am_tag_user_4

am_tag_user_4

atu_user_id

atu_tag_id

atu_num

374

0

9

374

89

9


更新结果目标表:am_tag_user_4  

am_tag_user_4

atu_user_id

atu_tag_id

atu_num

374

0

7

374

89

8

UPDATE am_tag_user_4 tag

INNER JOIN am_favorites_4 fav

ON tag.atu_tag_id=fav.af_tag_id and tag.atu_user_id=fav.af_user_id

INNER JOIN (SELECT af_user_id,af_tag_id,count(*) as cnt

FROM am_favorites_4,am_tag_user_4

where atu_tag_id=af_tag_id and atu_user_id=af_user_id and af_content_id = 535522 and af_content_type=3 and af_user_id=374

group by af_user_id,af_tag_id) AS T1

ON tag.atu_tag_id=T1.af_tag_id and tag.atu_user_id=T1.af_user_id

SET tag.atu_num=tag.atu_num- T1.cnt



关于SQL update 多表关联更新的实现代码的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于170823、SQL Update 多表联合更新的方法、KSQL中Update多表级联更新的语法、Mysql update多表联合更新的方法小结、mysql关联多表进行update更新操作等相关内容,可以在本站寻找。

本文标签:

上一篇SqlServer 按时间段查询问题(sql server按时间范围查询语句)

下一篇SQL Server AlwaysOn读写分离配置图文教程(sqlserver读写分离方案)