2016-04-13 41 views
1

這是查詢SET UPDATE語句裏面MSSQL不工作

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 

它的工作原理,但不知何故,我覺得應該有這樣做更合適的方式。

+0

您不必發出'UPDATE'來更改變量的值。只需簡單地使用'SET @tempvarA = 1'。 –

+0

你正在使用哪個版本的sql server? – Sankar

+0

它在sql server 2000中很好用。 – Sankar

回答

4

因此,如果我正確理解您的問題,首先要聲明一個變量並將其設置爲一個值,然後使用該變量更新列的值。讓我們以它一步一步:

1)聲明變量:

​​

2),設置變量:

SET @tempvarA = 1; 

3)更新表與所述變量:

UPDATE Table1 SET columnA = @tempvar1; 

雖然要小心。以上將更新columnA的所有值到tempvarA的值。如果你想要特定的行,你將不得不在你的UPDATE聲明中添加一個where子句。

+0

嗨!,是的,你的回答很明確!但我不能做第2步),因爲我需要Table1中的一列作爲我對tempvarA的計算的一部分。像Set tempvarA = 1 + Table1.intColumn。將tempvarA = 1 + Table1.intColumn放在UPDATE語句內似乎不起作用 – user3770093

+0

謝謝你現在的作品! – user3770093

+0

你能接受它作爲正確答案嗎?非常感謝! –

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 

這對我來說工作正常。

+0

嘿,謝謝!它正在工作,我發現原因是來自其他事情,這是我的案例陳述不正確返回tempvarA – user3770093

+0

它現在的作品,現在非常感謝你! – user3770093