簡體   English   中英

我更新了臨時表,並更新了原始表MSSQL Server

[英]I updated the temporary table and it updated the original table MSSQL Server

我運行此查詢來更新臨時表CTE_Companies ,並更新了原始的Companies表。 我現在應該怎么辦 :(

with CTE_Companies
(ZIP)
As
(
Select ZIP from Companies
)

Update  CTE_Companies 
set CTE_Companies.ZIP= '0'+CTE_Companies.ZIP
where len(CTE_Companies.ZIP) = 4 

common-table-expression不是臨時表。 它更像是對一個或多個表的子查詢。 如果從單個表中選擇,則將更新此表。

這是設計使然,非常有用,因為您可以更改“ Update / Delete以輕松進行“ Select以查看要更改或刪除的內容。 因此,您應該在CTE包括Where條件。

沒有基礎表就無法更新表表達式。 使用臨時表。

BEGIN TRAN

WITH CTE_Companies
(ZIP)
As
(
Select ZIP from Companies
)

Update  CTE_Companies 
set CTE_Companies.ZIP= SUBSTRING (1, CTE_Companies.ZIP, LEN(CTE_Companies.ZIP) - 1)
where
    len(CTE_Companies.ZIP) = 5 
    and CTE_Companies.ZIP LIKE '0%'


-- check if your data is ok and then change the next line to COMMIT TRAN     
ROLLBACK TRAN

暫無
暫無

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

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