ホームページ  >  記事  >  データベース  >  単一の MySQL クエリで行の更新と取得を実現するにはどうすればよいですか?

単一の MySQL クエリで行の更新と取得を実現するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-24 19:48:29462ブラウズ

How to Achieve Row Updates and Retrieval in a Single MySQL Query?

単一の MySQL クエリで行の更新と取得を実現する

MySQL では、複数のクエリを実行すると時間がかかることがあります。パフォーマンスを最適化するには、クエリを 1 つに結合することが望ましいです。これが Quan によって提示されたクエリの核心です。更新された行を返すために 2 つのクエリをマージできますか?

最初のクエリは特定の基準に基づいてテーブルから行を選択し、2 番目のクエリは同じ基準を満たす行を更新します。これらのクエリを結合するには、1 回の操作で読み取りと書き込みの両方を可能にする手法が必要です。

1 つのアプローチは、サブクエリを使用することです。しかし、Quan はこの方法には限界がありました。 https://gist.github.com/PieterScheffers/189cad9510d304118c33135965e9cddb:

SET @uids := null;
UPDATE footable
   SET foo = 'bar'
 WHERE fooid > 5
   AND ( SELECT @uids := CONCAT_WS(',', fooid, @uids) );
SELECT @uids;

このクエリは次の手順を利用します:

  1. 変数を初期化する(@uids) を null に設定します。
  2. UPDATE ステートメントを使用して、条件を満たす行を変更すると同時に、その fooid 値を @uids に追加して、カンマ区切りのリストを作成します。
  3. SELECT ステートメントを実行する更新された @uids 値を取得します。これには、更新された行 fooid 値のリストが含まれます。

このソリューションは、行の更新と取得の両方を効率的に組み合わせて、単一のクエリで必要な機能を提供します。

以上が単一の MySQL クエリで行の更新と取得を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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