正在进行安全检测...

发布时间:1714974498

update语法汇总
最常用的update语法是:UPDATE
SET=SET=
如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦第一,要select出来放在临时变量上,有很多个哦第二,再将变量进行赋值。
列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢?就好象下面insertintotable1(c1,c2,c3
(selectv1,v2,v3fromtable2
答案是可以的,具体的语法如下:UPDATE
SET(,=(SELECT(,FROM
WHERE=WHERE;下面是这样一个例子:
两个表ab,想使b中的memo字段值等于a表中对应idnameaidname123
bidClientName123
(MSSQLServer语句:updatebsetClientName=a.namefroma,bwherea.id=b.id(Oralce语句:updatebset(ClientName=(SELECTnameFROMaWHEREb.id=a.idupdatesetfrom语句格式
whereset都需要关联一个表进行查询时,整个update执行时,就需要对被关联的表进行两次扫描,显然效率比较低。
对于这种情况,SybaseSQLSERVER的解决办法是使用UPDATE...SET...FROM...WHERE...的语法,实际上就是从源表获取更新数据。
SQL中,表连接(leftjoinrightjoininnerjoin等)常常用于select语句,其实在SQL语法中,这些连接也是可以用于updatedelete语句的,在这些语句中使用join还常常得到事半功倍的效果。UpdateT_OrderFormSETT_OrderForm.SellerID=B.L_TUserID
FROMT_OrderFormALEFTJOINT_ProductInfoBONB.L_ID=A.ProductID

用来同步两个表的数据!OralceDB2都支持的语法:
UPDATEASET(A1,A2,A3=(SELECTB1,B2,B3FROMBWHEREA.ID=B.IDMSSQLServer不支持这样的语法,相对应的写法为:
UPDATEASETA1=B1,A2=B2,A3=B3FROMALEFTJOINBONA.ID=B.ID个人感觉MSSQLServerUpdate语法功能更为强大。MSSQLSERVER的写法:UPDATEASETA1=B1,A2=B2,A3=B3FROMA,BWHEREA.ID=B.IDOracleDB2中的写法就比较麻烦了,如下:
UPDATEASET(A1,A2,A3=(SELECTB1,B2,B3FROMBWHEREA.ID=B.IDWHEREIDIN(SELECTB.IDFROMBWHEREA.ID=B.ID
关于updatesetfrom
关键字:updatesetfrom
下面是这样一个例子:
两个表ab,想使b中的memo字段值等于a表中对应idnameaidname
123bidClientName
123(MSSQLServer语句:
updatebsetClientName=a.namefroma,bwherea.id=b.id
(Oralce语句:updatebset(ClientName=(SELECTnameFROMaWHEREb.id=a.idupdatesetfrom语句格式

正在进行安全检测...

相关推荐