簡體   English   中英

T-SQL中來自一個源列表的多個表更新

[英]Multiple table updates from one source list in T-SQL

我有3個表,希望對這些表進行數據UPDATE (將它們稱為PROCESSDIARYHISTORY

3個表都具有一個ID列,並且我希望更新的數據子集是從針對PROCESS表的SELECT語句中檢索的

SELECT ID FROM PROCESS WHERE STATUS = 1 AND COMPANY = 'XYZ'

使用T-SQL,我打算做3條UPDATE語句( PROCESS表位於最后,因為它是引用列表),像這樣

UPDATE HISTORY ... WHERE ID IN (SELECT ID FROM PROCESS WHERE STATUS = 1 AND COMPANY = 'XYZ')
UPDATE DIARY ... WHERE ID IN (SELECT ID FROM PROCESS WHERE STATUS = 1 AND COMPANY = 'XYZ'
)
UPDATE PROCESS ... WHERE STATUS = 1 AND COMPANY = 'XYZ'

我的問題是:這是在T-SQL中執行此操作的最有效方法嗎?還是我應該創建某種CTE來僅引用一次? (文檔/性能的數量不是問題,我只是想了解一下,作為一名前OO開發人員使用SQL,我是否陷入了不良習慣或在某處缺少竅門?

我認為您將無法使用CTE,因為CTE只能被引用一次。 更新3個表需要運行3個獨立的查詢。

如果在內部查詢中獲取ID的成本很高,則可以考慮運行查詢以僅獲取一次並將結果存儲在臨時表或表變量中。 這樣,您將能夠在所有更新語句中引用該臨時表或表變量。

如果內部查詢的運行成本不高,我會保留它,以免不必要地使事情復雜化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM