程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> sql server的 update from 語句的深究

sql server的 update from 語句的深究

編輯:MSSQL

sql server的 update from 語句的深究。本站提示廣大學習愛好者:(sql server的 update from 語句的深究)文章只能為提供參考,不一定能成為您想要的結果。以下是sql server的 update from 語句的深究正文


普通來講update一個表, 應用where語句便可:


UPDATE Ttest SET
    statusInd = 'ACTIVE' 
WHERE
    id = 123

留意:

update 語句前面的table稱號,是弗成以啟用別號的。
那末此時的id字段,就是來自Ttest表的(無可厚非)

然則,假如update,還有額定的join table 前提束縛,語句以下:


UPDATE Ttest SET
    statusInd = 'ACTIVE'
FROM
    Tparent parent
WHERE
    Ttest.id = 123
AND Ttest.parentId = parent.id
AND parent.statusInd = 'ACTIVE'

留意:

update 前面的Ttest 不克不及應用別號
那末定位到,要修正的Ttest記載,就必需如許寫:Ttest.id = 123

假如直接寫id=123, 會分不清是 Ttest 表 照樣 Tparent 表的  id
此sql語句的意思是,假如想修正本身的statusInd屬性,得聯系關系其parent的statusInd屬性能否也是'ACTIVE'

此時,層級關系是應用兩個表(Ttest和Tparent)來界說 。

然則假如,數據庫表的設計,只是用一個表(Ttest),來表述數據之間的層級關系(Ttest.parentId = Ttest.id),
若何書寫,可以完成目標呢?(假如想修正本身的statusInd屬性,得聯系關系其parent的statusInd屬性能否也是'ACTIVE')

完成以下:


UPDATE Ttest SET
    statusInd = 'ACTIVE'
FROM
    Ttest parent,
    Ttest
WHERE
    Ttest.id = 123
AND Ttest.parentId = parent.id
AND parent.statusInd = 'ACTIVE'

說明:

其需求是:修正本身的statusInd屬性,得聯系關系其parent的statusInd屬性能否也是'ACTIVE'
update 前面的表(Ttest)不克不及,定名別號!
from 前面的表 也是 Ttest,然則 要update的Ttest 記載 和 from Ttest 記載其實不一樣 (要update 孩子,然則要from 聯系關系其父親)

from 前面 要多寫 一個 沒有別號的 Ttest ,用來指定此表的記載,就是要被update的。
而須要from join的 (Ttest)表,就必需有一個體名,來差別與update的表(Ttest)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved