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)