2016-04-29 8 views
0

インサート内で実行されるselect内で変数の代入を取得しようとしています。インサート内のselect内で変数を代入する

INSERT INTO myTable 
      (Value1,Value2,Value3) 
      VALUES 
      (
      (
        SELECT 'SomeText' + @MyGuid = lower(convert(varchar(36), newid())) + '"Some more text" />' AS Value1, 
        @MyGuid AS Value2, 
        columnX AS Value3 FROM myOtherTable)); 

は基本的に、私は二度同じ変数を使用する必要がありますが、割り当ては、私は、割り当て構文を変更しようとした

Incorrect syntax near '='. 

でフラグが付けられますが、それは助けにはなりませんでした。 私はGuidsが同じであることが必要です。 これは可能ですか?

答えて

1

あなたはINSERTに列ごとに変換次いで、予め各行のNEWID()値を選択することにより、CTEでこれを行うことができる。

;With ToInsert As 
(
    Select lower(convert(varchar(36), newid())) As MyGuid, 
      ColumnX As Value3 
    From MyOtherTable 
) 
Insert MyTable 
     (Value1, Value2, Value3) 
Select 'SomeText' + MyGuid + '"Some more text" />' As Value1, 
     MyGuid As Value2, 
     Value3 
From ToInsert 
関連する問題