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

推薦する

MySQL でのワイルドカードを使用したファジークエリの実装に関する簡単な説明

MySQL データベースでは、あいまいクエリが必要な場合にワイルドカードを使用します。まず、演算子と...

Linux suse11でルートパスワードを忘れた場合に変更する方法の簡単な分析

SUSE Linuxでルートパスワードを忘れた場合の解決方法SUSE (Linux オペレーティング...

Tomcat が localhost に通常アクセスすると 404 を報告する問題の解決方法

今日、プロジェクトのホームページにアクセスするために Tomcat を設定していたところ、404 エ...

HTML のメタタグの簡単な比較

メタ タグは、ファイル情報を定義し、検索エンジンによる検索を容易にするために Web ページ ファイ...

Vueダイナミックフォームの詳細な応用

概要バックグラウンド管理システムには多くのフォーム要件があります。データをjson 形式で書き込み、...

インデックスを設計する際の原則は何ですか? インデックスの障害を回避するにはどうすればよいでしょうか?

目次主キーインデックス頻繁にクエリされるフィールドのインデックスを作成する大きなフィールドのインデッ...

MySQL ディープ ページング (数千万のデータを素早くページ分割する方法)

目次序文場合最適化まとめ序文バックエンド開発では、一度に大量のデータがロードされ、メモリやディスク ...

HTML における <meta> タグの使用に関する詳細な説明

私たちが作成する Web ページでは、より多くの人々に訪問してもらいたい場合、検索エンジンを使用して...

Ubuntu の Python で C/C++ メソッドを呼び出すダイナミック リンク ライブラリの詳細な説明

ブーストをインストールPython から C/C++ を呼び出す方法はたくさんあります。この記事では...

RHCEはApacheをインストールし、ブラウザでIPにアクセスします

1. at は、5 時間後にルート ディレクトリの at_test ファイルに「これは at タスク...

MySQL (8 および 5.7) の Docker インストール

この記事では、Dockerを使用してMySQLデータベースとリモートアクセス構成をデプロイする方法を...

MySQLフィルタリングレプリケーションのアイデアの詳細な説明

目次mysql フィルター レプリケーションメインデータベースに実装ライブラリから実装いくつかの質問...

CSS3+HTML5+JSでブロックの縮小・拡大アニメーション効果を実現

最近、あるプロジェクトに取り組んでいたとき、自分のプロジェクトでは CSS3 のアニメーション技術を...

JavaScript の for/of、for/in の詳細な紹介

目次JavaScriptでは、 forループを記述する一般的な方法がいくつかあります。最初の、そして...