麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > SQL Server > 正文

sql server的 update from 語句的深究

2024-08-31 01:02:44
字體:
來源:轉載
供稿:網友

一般來說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)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美亚州 | 免费看黄色一级片 | 美女黄影院 | 欧美中文字幕一区二区三区亚洲 | 日本中文字幕久久 | 国产亚洲精品久久久久久久久 | 国产精品视频一区二区三区四区五区 | 久久人人做 | 国产精选久久久 | 成人 精品 | 蜜桃传免费看片www 一本色道精品久久一区二区三区 | 免费在线观看毛片视频 | 国产一级一国产一级毛片 | 男女做性免费网站 | 午夜视频在线免费观看 | 高清做爰免费无遮网站挡 | 欧美一级一区二区三区 | 欧美福利视频一区二区三区 | 久久精片 | 日本在线免费观看视频 | 海角在线观看91一区二区 | 成人一级免费视频 | 免费黄色短视频网站 | 国产伦精品一区二区三区 | 老司机一级毛片 | 亚洲草逼视频 | 少妇一级淫片免费放4p | 精品国产91久久久久久 | 久久精品a一级国产免视看成人 | 久久视频精品 | 亚洲综合精品 | 精品一区二区久久久久久久网精 | 国产一区精品在线观看 | 欧美一区2区三区4区公司二百 | 污黄视频在线观看 | 国产免费永久在线观看 | 国产一区二区视频在线播放 | qyl在线视频精品免费观看 | 欧美精品久久久久久久久久 | 国产一区二区三区在线视频 | 神马顶级推理片免费看 |