MySQL データベース内の同じテーブルを同時にクエリして更新する方法

MySQL データベース内の同じテーブルを同時にクエリして更新する方法

通常のプロジェクトでは、1 回の入札で同時にデータを更新および照会する必要があるという問題によく遭遇します。たとえば、以下に示すようなデータのテーブルがある場合、更新操作は次のようになります。status=1 の名前の値を id=2 の名前の値に更新します。

這里寫圖片描述

通常、この要件を満たすには、次のステートメントを考えます。

UPDATE tb_testSET NAME = ( SELECT NAME FROM tb_test WHERE id= 2)WHERE `status` = 1

ただしYou can't specify target table 'tb_test' for update in FROM clause 。同じテーブルで操作することはできません。考え方を変えてください。同じテーブルでなければ、操作は可能になるはずです。したがって、選択した結果を一時的な中間テーブルとして扱い、中間テーブルから必要な更新関連データを取得できます。したがって、上記の更新ステートメントは次のように変更できます。

UPDATE tb_testSET NAME = (select name from ( SELECT NAME FROM tb_test WHERE id = 2) as t)WHERE `status` = 1

これで質問の操作は完了です。一般的なプロセスは、中間テーブル t として id=2 のデータを照会し、t テーブルからセット データを照会し、同じステートメントで同じテーブルを更新および選択しないように更新操作を実行します。これは、tb_test と中間テーブル t の 2 つのテーブルを操作することと同じであるためです。最終結果は次のとおりです。

這里寫圖片描述

以下もご興味があるかもしれません:
  • Mysql 更新マルチテーブル共同更新方法の概要
  • MySQL でデータをクエリし、条件に基づいて別のテーブルに更新する方法の例
  • MySQL で 1 つのテーブルのフィールドを使用して別のテーブルのフィールドを更新する方法
  • MySQL は、あるテーブルのデータに基づいて別のテーブルの特定のフィールドを更新します (SQL ステートメント)
  • MySQLで別のテーブルを更新する方法
  • たった一つのSQL文でテーブル全体の増減範囲と増減率を更新するソリューション

<<:  最も単純な ErrorBoundary コンポーネントをカプセル化して、React 例外を処理する

>>:  Linux でファイル内の特定の文字の数を数える方法

推薦する

Dockerデータボリューム操作の実装

データボリュームの使用開始先ほどのケースでは、ホストからコンテナにデータをコピーする必要がある場合、...

MySQL 最適化 query_cache_limit パラメータの説明

クエリキャッシュ制限query_cache_limit は、単一のクエリで使用できるバッファ サイズ...

HTML で js を使用してローカル システム時間を取得する

コードをコピーコードは次のとおりです。 <div id="名前"> ...

JS を使用した簡単な雪効果の例の詳細な説明

目次序文主な実装コードHTMLコードJSコード序文南の友達の多くは、雪をほとんど見たことがない、ある...

画像拡大鏡効果のJSバージョン

この記事では、画像拡大鏡効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な内容...

Linux 7.6 バイナリに MySQL 8.0.27 をインストールする詳細な手順

目次1. 環境整備1.1 オペレーティング システムのバージョン1.2 ディスク容量1.3 ファイア...

vueプロジェクトは特定の領域に透かしを描くことを実現する

この記事では、Vueを使用して特定の領域に透かしを描く方法を紹介します。具体的な内容は次のとおりです...

Vueはローカルストレージの追加、削除、変更機能を実装します

この記事では、ローカルストレージの追加、削除、変更を実装するためのVueの具体的なコードを例として紹...

CMD で MySQL データベースを操作するときに中国語の文字化けが発生する問題の解決方法

Baiduで検索しました。 。 chcp コマンドを使用して、cmd の文字エンコーディングを 65...

Docker コンテナのログを表示およびクリーンアップする方法 (テスト済みで効果的)

1. 問題Docker コンテナのログにより、ホストのディスク領域がいっぱいになりました。 doc...

MySQL マスター スレーブ データベースが同期されない問題を解決する 2 つの方法

目次MySQL マスター スレーブ データベースが同期されない問題を解決する 2 つの方法1. 非同...

JavaScript が Xiaomi のカルーセル効果を模倣

この記事は、透明度を変えてカルーセルにするXiaomiカルーセルを真似て書いたものです。初心者なので...

フロントエンドに必要なNginx設定の詳細な説明

Nginx (エンジン x) は、軽量で高性能な HTTP およびリバース プロキシ サーバーであり...

入力テキストボックスの入力実装プロパティを無効にする

今日は、開発でよく使われる、非常に便利な HTML タグをいくつかまとめてみたいと思います。これらの...