[解決済み] SQL ServerでJOINを使用してテーブルを更新しますか?
2022-03-22 15:11:29
質問
あるテーブルのカラムを、他のテーブルと結合して更新したい。
UPDATE table1 a
INNER JOIN table2 b ON a.commonfield = b.[common field]
SET a.CalculatedColumn= b.[Calculated Column]
WHERE
b.[common field]= a.commonfield
AND a.BatchNO = '110'
しかし、それは文句を言っている。
<ブロッククオート
Msg 170, Level 15, State 1, Line 2
2行目 a'付近に不正な構文があります。
どこが悪いのでしょうか?
解決方法は?
SQL Server 独自の
UPDATE FROM
の構文があります。また、なぜ
CommonField
で、その後にフィルタリングしています。 こうしてみてください。
UPDATE t1
SET t1.CalculatedColumn = t2.[Calculated Column]
FROM dbo.Table1 AS t1
INNER JOIN dbo.Table2 AS t2
ON t1.CommonField = t2.[Common Field]
WHERE t1.BatchNo = '110';
もし、あるカラムの値を常に別のカラムの集約値に設定しようとする(冗長なデータの保存を避けるという原則に反する)ような馬鹿げたことをしているなら、CTE(共通テーブル式)を使うことができます。 こちら と こちら をご覧ください。
;WITH t2 AS
(
SELECT [key], CalculatedColumn = SUM(some_column)
FROM dbo.table2
GROUP BY [key]
)
UPDATE t1
SET t1.CalculatedColumn = t2.CalculatedColumn
FROM dbo.table1 AS t1
INNER JOIN t2
ON t1.[key] = t2.[key];
の行があるたびに、この更新をすべて再実行しなければならないからです。
table2
を変更します。A
SUM
は、常に実行時に計算することができ、そうすることで、結果が古くなることを心配する必要がないのです。
関連
-
[解決済み] SQL Server の更新コマンドでエラー - "現在のコマンドで深刻なエラーが発生しました".
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Serverでテーブルの名前を変更する方法は?
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】SQL Server データベース復元エラー:指定されたキャストは有効ではありません。(SqlManagerUI)
-
[解決済み] try catch ブロックで @@trancount > 0 を確認する必要があるのはどのような場合ですか?
-
[解決済み] サブレポートが表示されない。サブレポートは別々に動作します - メインレポートとは連動しません
-
[解決済み] 特別なプリンシパルdbo.を使用することはできません。エラー 15405
-
[解決済み] 結果を分割するためのSQLの小数点以下の値
-
[解決済み] SQL Server : ログインに成功しましたが、「データベース [dbName] にアクセスできません。(ObjectExplorer) "と表示されました。
-
[解決済み] SQL Server : ログインに成功しましたが、「データベース [dbName] にアクセスできません。(ObjectExplorer) "と表示されました。
-
[解決済み] SQL Server の .sql ファイルとは何ですか?
-
[解決済み] SQL Server : varchar を INT に変換する。
-
[解決済み] SQL Server - 更新時の内部結合 [重複]。