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

推薦する

Vue で SVG アイコンを導入する 2 つの方法

Vue で SVG アイコンを導入する方法Vue で svg アイコンを導入する方法 1インストール...

Docker で MySQL クラスターを構築する方法の例

Docker の基本的な手順:アップデートパッケージ yum -y アップデートDocker仮想マシ...

Vue で Alibaba のアイコンフォント ベクター アイコンを使用する方法について

インターネット上には多くのインポート方法があり、公式も3つのインポート方法を提供していますが、インポ...

トップ 10 Js 画像処理ライブラリ

目次導入1. 異食症2. レナ3. コンプレッサー4. ファブリック5. ぼかす6. 画像を結合する...

高品質なコードを書く Web フロントエンド開発実践書の抜粋

(P4) Web 標準は一連の標準で構成されています。中心となる概念は、Web ページの構造、スタイ...

Windows Server 2016 で Flash を有効にする方法

最近、VMware Horizo​​n を導入してテストしましたが、そのコンソールにはデフォルトで ...

Linux ディレクトリ切り替え実装コード例

ファイルの切り替えは Linux でよく行われる操作です。Linux を初めて学ぶときに最初に触れる...

NexusはHTTPSプロトコルをサポートするためにnginxプロキシを使用します

背景すべての会社の Web サイトは HTTPS プロトコルをサポートする必要があります。Aliba...

ドラッグアンドドロップでVueユーザーインターフェースを生成する方法

目次序文1. 技術原理1.1 レイアウト1.2 コンポーネント1.3 ステータス1.4 イベント1....

WeChatアプレットは日付と時刻に基づいた並べ替え機能を実装

最近、小さなプログラム プロジェクトを引き継いだのですが、リストを日付と時刻で並べ替えるという要件が...

HTML テーブル マークアップ チュートリアル (28): セルの境界線の色属性 BORDERCOLOR

テーブルを美しくするために、セルごとに異なる境界線の色を設定できます。基本的な構文<TD 境界...

HTML+CSS+jQuery はスクリーンショットで検索ホットリストタブ効果を模倣します

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

CSS3 で作成した本のページめくり効果

結果:実装コード: html <!-- よろしければハートを付けてください! --> &...

CSSを使用して複数の画像を中央に水平に表示する方法

まず実装手順について説明します。最終結果 2. コードの実装HTML部分 <div class...

Vueプロジェクトのパッケージ化の詳細な説明

目次1. 関連構成ケース1(使用ツールはvue-cil)ケース2(使用するツールはwebpack) ...