欢迎来到天天文库
浏览记录
ID:34726696
大小:67.68 KB
页数:3页
时间:2019-03-10
《update、select使用方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Update、select使用方法最常用的update语法是:UPDATESET=,SET=如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦第一,要select出来放在临时变量上,有很多个哦第二,再将变量进行赋值。列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢?就好象下面insertintotable1(c1,c2,c3)(selectv1,v2,v3fromtable2)答案是可以
2、的,具体的语法如下:UPDATESET(,)=(SELECT(,)FROMWHERE=)WHERE; 下面是这样一个例子:两个表a、b,想使b中的memo字段值等于a表中对应id的name值表a:id,name1王2李3张表b:id,ClientName
3、 123(MSSQLServer)语句:updateb set ClientName =a.name froma,b wherea.id=b.id (Oralce)语句:updateb set (ClientName) = (SELECTnameFROMaWHEREb.id=a.id)updatesetfrom语句格式当where和set都需要关联一个表进行查询时,整个update执行时,就需要对被关联的表进行两次扫描,显然效率比较低。对于这种情况,Sybase和SQLSERVER的解决办法是使用UPDATE...SET...FROM...
4、WHERE...的语法,实际上就是从源表获取更新数据。在SQL中,表连接(leftjoin、rightjoin、innerjoin等)常常用于select语句,其实在SQL语法中,这些连接也是可以用于update和delete语句的,在这些语句中使用join还常常得到事半功倍的效果。UpdateT_OrderFormSETT_OrderForm.SellerID=B.L_TUserIDFROMT_OrderFormALEFTJOINT_ProductInfo BONB.L_ID=A.ProductID用来同步两个表的数据!Oralce和DB2都支持的语法:UPDAT
5、EASET(A1,A2,A3)=(SELECTB1,B2,B3FROMBWHEREA.ID=B.ID)MSSQLServer不支持这样的语法,相对应的写法为:UPDATEA SETA1=B1,A2=B2,A3=B3 FROMALEFTJOINBONA.ID=B.ID个人感觉MSSQLServer的Update语法功能更为强大。MSSQLSERVER的写法:UPDATEASETA1=B1,A2=B2,A3=B3FROMA,BWHEREA.ID=B.ID在Oracle和DB2中的写法就比较麻烦了,如下:UPDATEASET(A1,A2,A3)=(SELECTB1,B2
6、,B3FROMBWHEREA.ID=B.ID)WHEREIDIN(SELECTB.IDFROMBWHEREA.ID=B.ID)例子表A代码值1张三2李四3王五表B代码值234更新表B的值,用表A的值,条件是表B的代码=表A的表码updateBbsetb.值=(selecta.值fromAawherea.代码=b.代码)如果A表没有的,B表这个字段的值就为空了,后面加个什么条件,A表没有的,B表不变呢updateBbsetb.值=(selecta.值fromAawherea.代码=b.代码)whereb.代码in(selecta.代码fromAa)或updateBbse
7、tb.值=(selecta.值fromAawherea.代码=b.代码)whereb.代码in(selecta.代码fromAainnerjoinBbona.代码=b.代码)
此文档下载收益归作者所有