updatesetfromwhere

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

updatesetfromwhere
关于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)语句:update b set ClientName = from a,b where a.id = b.id
(Oralce)语句:update b set (ClientName) = (SELECT name FROM a WHERE b.id = a.id)
()语句:: UPDATE A, B SET A1 = B1, A2 = B2, A3 = B3 WHERE A.ID = B.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
在和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)
的写法是:
UPDATE A, B SET A1 = B1, A2 = B2, A3 = B3 WHERE A.ID = B.ID。

相关文档
最新文档