关于SQLupdate多表关联更新的实现代码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于170823、SQLUpdate多表联合更新的方法、KSQL中Update多表级联更新的语法、M
关于SQL update 多表关联更新的实现代码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于170823、SQL Update 多表联合更新的方法、KSQL中Update多表级联更新的语法、Mysql update多表联合更新的方法小结、mysql关联多表进行update更新操作等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- SQL update 多表关联更新的实现代码
- 170823、SQL Update 多表联合更新的方法
- KSQL中Update多表级联更新的语法
- Mysql update多表联合更新的方法小结
- mysql关联多表进行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
---------------------------------------------------------------------------------------
语句一
语句二
注意:
update后面是不能跟多表的,但跟在from子句后面
总结
以上所述是小编给大家介绍的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多表级联更新的语法
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多表联合更新的方法小结
下面我建两个表,并执行一系列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更新操作
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更新操作等相关内容,可以在本站寻找。
本文标签: