この記事では主に、MySQL データベース内の同じテーブルを同時にクエリと更新する方法を紹介します。必要な友人はそれを参照してください
通常のプロジェクトでは、次のような問題によく遭遇します。ラベル内でも同じです。例: 以下に示すようなテーブル データがあります。ここで更新操作が必要です。status=1 の name 値を id=2 の name 値に更新します
通常、これを実現するには次のステートメントを考えます。この要件:
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 の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。