ホームページ  >  記事  >  データベース  >  同じテーブルの同時クエリと更新を実装した MySQL の分析例

同じテーブルの同時クエリと更新を実装した MySQL の分析例

黄舟
黄舟オリジナル
2017-09-20 11:23:382203ブラウズ

この記事では主に、MySQL データベース内の同じテーブルを同時にクエリと更新する方法を紹介します。必要な友人はそれを参照してください

通常のプロジェクトでは、次のような問題によく遭遇します。ラベル内でも同じです。例: 以下に示すようなテーブル データがあります。ここで更新操作が必要です。status=1 の name 値を id=2 の name 値に更新します

同じテーブルの同時クエリと更新を実装した MySQL の分析例

通常、これを実現するには次のステートメントを考えます。この要件:

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 ステートメントは次のように変更できます。

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 の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。