挿入ステートメントが使用されるのと同じ方法でSQLサーバーの複数の列を更新する方法はありますか?
何かのようなもの:
Update table1 set (a,b,c,d,e,f,g,h,i,j,k)=
(t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k)
from table2 t2
where table1.id=table2.id
そうではなく、そのようなものです。
update table set a=t2.a,b=t2.b etc
100個以上の列がある場合、これを書くのはかなり面倒です。
「面倒な方法」は標準SQLであり、RDBMSの主流である方法です。
100個以上の列を使用すると、設計上の問題が発生する可能性があります。また、クライアントツール(生成UPDATEステートメントなど)やORMを使用した方法で問題を軽減する方法もあります。
これを試して:
UPDATE table1
SET a = t2.a, b = t2.b, .......
FROM table2 t2
WHERE table1.id = t2.id
Oracleを除くほとんどのSQL方言でこれが機能するはずです。
そうです - これは多くの入力です - SQLがこれを行う方法です。
Update table1 set (a,b,c) = (select x,y,x)
構文は行値コンストラクタの使用例です。 Oracleはこれをサポートしています 、MSSQLはサポートしていません。 ( 接続項目 )
あなたの質問はほぼ正しいです。これに対するT-SQLは次のとおりです。
UPDATE Table1
SET Field1 = Table2.Field1,
Field2 = Table2.Field2,
other columns...
FROM Table2
WHERE Table1.ID = Table2.ID
構文
UPDATE table-name
SET column-name = value, column-name = value, ...
WHERE condition
例
UPDATE school
SET course = 'mysqli', teacher = 'Tanzania', student = 'you'
WHERE id = 6
UPDATE t1
SET
t1.a = t2.a,
t1.b = t2.b,
.
.
.
FROM
table1 t1
INNER JOIN table2 t2 ON t1.id=t2.id
あなたはこれを試すことができます
私はこの方法で試してみました、そしてそれはうまく働きます:
UPDATE
Sub2
SET
SLNNOND = Sub.SLNNOND,
Sub2.SLNNONF = Sub.SLNNONF
FROM
#TEMP Sub2
これはうまくいくものです:
UPDATE `table_1`
INNER JOIN
`table_2` SET col1= value, col2= val,col3= val,col4= val;
値はtable_2の列です
これを数回再入力する必要がある場合は、私が一度行ったように行うことができます。右側のExcelシートの列に列の名前を入れます(各列の名前の最後に書き留めます(メモ帳++では簡単です))、新しいエントリに対応する値をコピーして貼り付ける列を作成します各列それから、それらの右側の独立した列に、設計通りにコンマを入れます。
それからあなたはその都度中央のコラムにあなたの値をコピーしなければならないでしょうそれからちょうどその時ペーストしそして実行する
私はもっと簡単な解決策を知りません