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 を使用した nGrinder パフォーマンス テスト プラットフォームの導入プロセスの分析

nGrinderとは何ですか? nGrinder は、スクリプトの作成、テストの実行、監視、結果レポ...

フロントエンドJavaScriptのクラス

目次1. クラス1.1 コンストラクタ() 1.2 ゲッターとセッター1.3 これ1.4 静的プロパ...

HTML でフォーム入力やその他のテキスト ボックスを読み取り専用にして編集不可にする方法

場合によっては、フォーム内のテキスト ボックスを読み取り専用にして、ユーザーがその中の情報を変更でき...

MySQL インストール プロンプト「詳細なヘルプについては NET HELPMSG 3534 と入力してください」の解決方法

今日、MySQL をインストールすると次のエラー メッセージが表示されます。 かなり長い時間ネットで...

ログインと登録機能を実現するjs

この記事の例では、ログインと登録機能を実装するためのjsの具体的なコードを参考までに共有しています。...

gorm で MySql データベースを操作する方法

1. テーブル内のフィールドの大文字と小文字の区別を設定するgorm クエリを使用する場合、MySQ...

ReactアプリケーションにおけるDOM DIFFアルゴリズムの詳細な説明

目次序文VirtualDOM とは何ですか? VirtualDOMを使用する理由DOMレンダリングペ...

MySQL のロックに関する問題

ロックの分類:データ操作の粒度から:テーブルロック:操作時にテーブル全体がロックされます。行ロック:...

ReactとReduxの関係を詳しく説明

目次1. reduxとreactの関係2. Reactのマルチコンポーネント共有3. reduxの3...

NetEase ブログで使用されているシンプルな Web ページ コード

NetEase Blog でコードを使用する方法: まずブログにログインし、ブログのホームページの左...

MySQL の従来のソート、カスタム ソート、中国語のピンイン文字によるソート

MySQL の通常のソート、カスタム ソート、中国語のピンイン文字によるソート。実際の SQL を記...

MySQL の主キーがクエリを高速化するために数値を使用するか UUID を使用するかについての簡単な分析

実際の開発では、MySQL の主キーは重複できず、主キーが自動的にインクリメントされることがあります...

IE7 互換モードで IE8 を有効にするコード

最も人気のあるタグはIE8ですブラウザベンダーはバージョンアップデートのリリースに躍起になっている一...

MySQLスケーラブル設計の基本原則

目次序文1. スケーラビリティとは何ですか?スケールアウトの利点:スケールアウトのデメリット:スケー...

Linux インデックスノード inode の詳細な説明

1. inodeの紹介inode を理解するには、まずファイル ストレージから始める必要があります。...