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屬性,得關(guān)聯(lián)其parent的statusInd屬性是否也是'ACTIVE'
此時,層級關(guān)系是使用兩個表(Ttest和Tparent)來定義 。
但是如果,數(shù)據(jù)庫表的設(shè)計,只是用一個表(Ttest),來表述數(shù)據(jù)之間的層級關(guān)系(Ttest.parentId = Ttest.id),
如何書寫,可以實現(xiàn)目的呢?(如果想修改自身的statusInd屬性,得關(guān)聯(lián)其parent的statusInd屬性是否也是'ACTIVE')
實現(xiàn)如下:
UPDATE Ttest SET
statusInd = 'ACTIVE'
FROM
Ttest parent,
Ttest
WHERE
Ttest.id = 123
AND Ttest.parentId = parent.id
AND parent.statusInd = 'ACTIVE'
解釋:
其需求是:修改自身的statusInd屬性,得關(guān)聯(lián)其parent的statusInd屬性是否也是'ACTIVE'
update 后面的表(Ttest)不能,命名別名!
from 后面的表 也是 Ttest,但是 要update的Ttest 記錄 和 from Ttest 記錄并不一樣 (要update 孩子,但是要from 關(guān)聯(lián)其父親)
from 后面 要多寫 一個 沒有別名的 Ttest ,用來指定此表的記錄,就是要被update的。
而需要from join的 (Ttest)表,就必須有一個別名,來區(qū)別與update的表(Ttest)
相關(guān)文章
SQLSERVER中union,cube,rollup,cumpute運算符使用說明
union,cube,rollup,cumpute運算符的使用技巧。2009-09-09SQL SERVER備份數(shù)據(jù)庫存儲過程的方法
這篇文章主要介紹了SQL SERVER備份數(shù)據(jù)庫存儲過程的方法,需要的朋友可以參考下2015-10-10Sql Server 索引使用情況及優(yōu)化的相關(guān)Sql語句分享
Sql Server 索引使用情況及優(yōu)化的相關(guān) Sql 語句,非常好的SQL語句,記錄于此,需要的朋友可以參考下2012-05-05SQL Server如何通過SQL語句直接操作另一臺服務(wù)器上的SQL SERVER的數(shù)據(jù)
這篇文章主要介紹了SQL Server如何通過SQL語句直接操作另一臺服務(wù)器上的SQL SERVER的數(shù)據(jù),需要的朋友可以參考下2022-10-10SQL Server利用sp_spaceused如何查看表記錄存在不準確的情況
這篇文章主要給大家介紹了關(guān)于SQL Server利用sp_spaceused如何查看表記錄存在不準確情況的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用SQL Server具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04SQL Server實時同步更新遠程數(shù)據(jù)庫遇到的問題小結(jié)
這篇文章主要介紹了SQL Server實時同步更新遠程數(shù)據(jù)庫遇到的問題小結(jié),需要的朋友可以參考下2017-04-04SQLServer2005創(chuàng)建定時作業(yè)任務(wù)
這篇文章主要為大家介紹了SQLServer2005創(chuàng)建定時作業(yè)任務(wù)的詳細過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12