SETが

2016-04-13 5 views
1

を動作していないこれは*クエリSETが

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

あるintColumnは、それが正常にクエリを実行しますが、@tempvarAが最初に宣言された前記columnAの値が0である表1 から列です。ここで何か不足していますか、@ tempparAの値はupdate文の実行後にのみ更新されますか?

私は次のことを試してみました:

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

こんにちは!はい、あなたの答えは明らかです!私はtempvarAのための私の計算の一部としてTable1に列が必要なので、私はステップ2を行うことはできません。 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