[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
2022-03-17 20:17:48
質問
でこのテーブルを更新する必要があります。 SQLサーバー 親」テーブルのデータで、以下を参照してください。
テーブル: 販売
id (int)
udid (int)
assid (int)
テーブル:ud
id (int)
assid (int)
sale.assid
には、更新するための正しい値が含まれています。
ud.assid
.
どのようなクエリでこれを行うのでしょうか?私が考えているのは
join
が、可能かどうかわからない。
どのように解決するのですか?
構文は、どのSQL DBMSを使用しているかに厳密に依存します。ここでは、ANSI/ISO(どのSQL DBMSでも動作するはず)、MySQL、SQL Server、Oracleで行う方法を紹介します。私が提案する ANSI/ISO 方式は、他の 2 つの方式に比べて一般的にかなり遅くなりますが、 MySQL、SQL Server あるいは Oracle 以外の SQL DBMS を使っている場合は、これが唯一の方法となる可能性があります (たとえば、使用している SQL DBMS が
MERGE
):
ANSI/ISOです。
update ud
set assid = (
select sale.assid
from sale
where sale.udid = ud.id
)
where exists (
select *
from sale
where sale.udid = ud.id
);
MySQLのことです。
update ud u
inner join sale s on
u.id = s.udid
set u.assid = s.assid
SQL Serverです。
update u
set u.assid = s.assid
from ud u
inner join sale s on
u.id = s.udid
PostgreSQLです。
update ud
set assid = s.assid
from sale s
where ud.id = s.udid;
ターゲット・テーブルが
FROM
節を使用します。
オラクル
update
(select
u.assid as new_assid,
s.assid as old_assid
from ud u
inner join sale s on
u.id = s.udid) up
set up.new_assid = up.old_assid
SQLiteです。
update ud
set assid = (
select sale.assid
from sale
where sale.udid = ud.id
)
where RowID in (
select RowID
from ud
where sale.udid = ud.id
);
関連
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL ServerでJOINを使用してテーブルを更新しますか?
-
[解決済み] 最初の行への結合方法
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
-
[解決済み】結合を使用したSQL更新クエリ
最新
-
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ラーニングノート--オペランドには1つのカラムが必要です。
-
MySQL】1136 - 列数が1行目の値数と一致しない問題を解決
-
MHAクラスタエラーサマリーの構築
-
[解決済み] 1つのPostgreSQLクエリで複数のWITHステートメントを使用するには?
-
[解決済み] 重複した行を削除するにはどうすればよいですか?
-
[解決済み] SQLでランダムな行を要求する方法は?
-
[解決済み] SQL Server 2008を使用してIDENTITY_INSERTをオン/オフする方法は?
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] 文字列の一部をUPDATEおよびREPLACEする。
-
[解決済み】結合を使用したSQL更新クエリ