MSSQL 中的 UPDATE 语句中的 SET 不起作用

SET inside UPDATE Statement in MSSQL not working

这是查询

DECLARE @tempvarA INT = 0
UPDATE Table1 SET @tempvarA = 1 + intColumn, columnA = @tempvarA

*intColumn 是表 1 中的列 它成功执行了查询,但 columnA 的值为 0,其中最初声明了 @tempvarA。我是不是遗漏了什么,或者 @tempvarA 的值只在更新语句执行后才更新?

我试过以下方法:

DECLARE @tempvarA INT = 0
UPDATE Table1 SET @tempvarA = 1 + intColumn
UPDATE Table1 SET columnA = @tempvarA

它有效,但我认为应该有更合适的方法。

因此,如果我对您的问题的理解正确,您首先要声明一个变量并为其设置一个值,然后使用该变量更新列的值。让我们一步一步来:

1)声明变量:

DECLARE @tempvarA INT;

2)设置变量:

SET @tempvarA = 1;

3)用上述变量更新table:

UPDATE Table1 SET columnA = @tempvar1;

不过要小心点。以上将把 columnA 的所有值更新为 tempvarA 的值。如果您想要特定的行,则必须在 UPDATE 语句中添加一个 where 子句。

为了

DECLARE @tempvarA INT = 0
UPDATE Table1 SET @tempvarA = 1, columnA = @tempvarA

你可以试试

DECLARE @tempvarA INT = 0
UPDATE t SET @tempvarA = 1, t.columnA = @tempvarA from My_Table_Name t

这对我来说很好用。