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 でファイル内の特定の文字の数を数える方法

推薦する

Win10 に Tomcat サーバーをインストールし、環境変数を構成する詳細なチュートリアル (画像とテキスト)

目次JDKをダウンロードしてインストールするTomcat 圧縮パッケージをダウンロードTomcatの...

Vue ページ状態の永続化の詳細な説明

目次コード:補充:要約する要件: 左のツリーと右のテーブル。組織ツリーでノードを選択した後、詳細ペー...

HTML の基礎_一般的なタグ、共通タグ、表

パート 1 HTML <html> -- 開始タグ<ヘッド>ウェブページ上の...

mysql は sql ファイルを実行し、エラーを報告します エラー: 不明なストレージ エンジン 'InnoDB' ソリューション

問題を見つける最近、仕事で問題が発生しました。InnoDB タイプの SQL ファイルを実行すると、...

Docker での Jenkins と Docker を使用した継続的デリバリー

1. 継続的デリバリーとは何かソフトウェア製品の出力プロセスは、ソフトウェアがいつでもリリースできる...

MYSQL8.0.13 無料インストール版 設定チュートリアル例 詳細説明

1. ダウンロード、例として8.0を取り上げますダウンロードアドレス: https://dev.my...

MySql 5.7.17 winx64 のインストールと設定に関する詳細なチュートリアル

1. ソフトウェアをダウンロードする1. MySQL の公式サイトにアクセスし、Oracle アカウ...

シームレスなカルーセルを実現するjQueryプラグイン

シームレス カルーセルは非常に一般的なエフェクトであり、ロジックを理解すれば非常に簡単です。効果は以...

ES6実装クラスのプライベート変数の書き方をいくつか詳しく説明します

プライベート変数のクロージャ実装プライベート変数は共有されないnew キーワードにより、 perso...

Windows Server 2008 R2 マルチユーザー リモート デスクトップ接続ライセンス

仕事ではリモート サーバーが必要になることが多く、次の 2 つの問題に遭遇することがよくあります。 ...

Vue プロジェクトで SVG コンポーネントをパッケージ化して構成する手順

最近新しい会社に入社しました。プロジェクトに携わった後、タイトルアイコンが svg で作られていると...

新しい要素を作成する3つの方法のまとめ

1つ目: テキスト/HTML経由var txt1="<h1>テキスト。<...

MySQL アカウント情報をエレガントにバックアップする方法

序文:最近、インスタンスの移行の問題に遭遇しました。データの移行後、データベースのユーザーと権限も移...

JS の効率的なマジック演算子の概要

JavaScript は現在、毎年新しいバージョンがリリースされており、より便利で効率的な新しい演算...

MySQL のマスター スレーブ レプリケーション オプションをオンラインで変更する方法

序文: MySQL で最も一般的に使用されるアーキテクチャは、マスター スレーブ レプリケーションで...