MSSQL中的UPDATE语句中的SET无法正常工作

时间:2016-04-13 06:59:05

标签: sql-server set declare

这是查询

"2","22","20","2"
"3","33","5","2"
"5","36","225","2"

* intColumn是Table1中的一列 它成功执行了查询,但columnA的值为0,其中最初声明了@tempvarA。我在这里遗漏了什么,或者@tempvarA的值是否仅在执行更新语句后更新?

我尝试了以下内容:

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

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

2 个答案:

答案 0 :(得分:4)

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

1)声明变量:

DECLARE @tempvarA INT;

2)设置变量:

SET @tempvarA = 1;

3)用所述变量更新表:

UPDATE Table1 SET columnA = @tempvar1;

但要小心。以上内容会将columnA的所有值更新为tempvarA的值。如果您想要特定的行,则必须在UPDATE语句中添加where子句。

答案 1 :(得分:1)

有关

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

这对我来说很好。