我运行了这个查询来更新临时表CTE_Companies
并更新了原来的Companies
表。我现在应该怎么办:(我更新了临时表,它更新了原始表MSSQL服务器
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
我运行了这个查询来更新临时表CTE_Companies
并更新了原来的Companies
表。我现在应该怎么办:(我更新了临时表,它更新了原始表MSSQL服务器
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
共表表达式不是一个临时表。它更像一个或多个表的子查询。如果你从一个表中选择,那么你会及时更新表。
这是由设计非常有用,因为你可以改变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
获取最后一次备份... –