[解決済み] MySQLでLEFT JOINを使用して複数のテーブルをUPDATEする
2022-04-21 03:10:06
質問
2 つのテーブルがあり、LEFT JOIN ですべての行の T1 のフィールドを更新したいと思います。
簡単な例として、次の結果セットのすべての行を更新します。
SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.id = T2.id WHERE T2.id IS NULL
は MySQLマニュアル という記述があります。
複数テーブルUPDATE文は、LEFT JOINなどのSELECT文で許可されているあらゆるタイプの結合を使用できます。
しかし、ドキュメントにある複数テーブルUPDATEでそれを行うための適切な構文が見当たりません。
適切な構文は何ですか?
どのように解決するのですか?
UPDATE t1
LEFT JOIN
t2
ON t2.id = t1.id
SET t1.col1 = newvalue
WHERE t2.id IS NULL
ただし
SELECT
を使った方が効率的です。
NOT IN
/
NOT EXISTS
の構文で構成されています。
SELECT t1.*
FROM t1
WHERE t1.id NOT IN
(
SELECT id
FROM t2
)
性能の詳細はブログの記事をご覧ください。
-
未完成の注文を発見する
の性能です。
LEFT JOIN
に比べNOT IN
残念ながら。
MySQL
のサブクエリでターゲットテーブルを使用することはできません。
UPDATE
という文言があるので、効率の悪いものにこだわる必要があります。
LEFT JOIN
の構文で構成されています。
関連
-
SQL集計、グループ化、ソート
-
MySQL インタビューの質問 - ハッシュインデックスを設定する方法
-
[解決済み】MySQLのエラーコードです。MySQL WorkbenchでUPDATE中に1175のエラーが発生しました。
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] SQL ServerでJOINを使用してテーブルを更新しますか?
-
[解決済み] MySQLで特定のカラムの後に複数のカラムを追加する
-
[解決済み] MySQLの多重更新
-
[解決済み】MySQL LEFT 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 実装 サイバーパンク風ボタン
おすすめ
-
MySQLのデータバックアップにmysqldumpを使用する方法
-
MySQLデータベースでvarchar型の数値の大きさを比較する方法
-
Mysqlのソート機能の詳細
-
[解決済み】マルチパート識別子をバインドできませんでした。
-
PostMan レポート エラー: 接続 ECONNREFUSED 127.0.0.1:port number
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] Mysqlでidを使用してテーブルから多くの行を削除する
-
[解決済み] INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINの違いは何ですか?[重複しています]。
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] Oracleの内部結合を使用したUpdateステートメント