ホームページ >データベース >mysql チュートリアル >注文後に MySQL で行の位置を効率的に見つけるにはどうすればよいですか?

注文後に MySQL で行の位置を効率的に見つけるにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-18 02:27:09462ブラウズ

How Can I Efficiently Find the Row Position in MySQL After Ordering?

MySQL ソート後の行位置を効率的に取得する

MySQL テーブルで、特定の列 (例: 'name') に基づいてソートした後に特定の行の位置を決定するには、大規模な結果セットのロードを回避するための最適化されたアプローチが必要です。

次のクエリを考えてみましょう:

<code class="language-sql">SELECT x.id,
       x.position,
       x.name
  FROM (SELECT t.id,
               t.name,
               @rownum := @rownum + 1 AS position
          FROM TABLE t
          JOIN (SELECT @rownum := 0) r
      ORDER BY t.name) x
 WHERE x.name = 'Beta'</code>

このクエリは、サブクエリを使用して ORDER BY 句に基づいて行の位置を割り当て、必要な行「Beta」をフィルタリングします。位置は @rownum ユーザー変数を使用して計算され、行ごとに自動的に増分されます。

また、次のクエリを使用して、タイを別の方法で処理することもできます。

<code class="language-sql">SELECT t.id,
       (SELECT COUNT(*)
          FROM TABLE x
         WHERE x.name < t.name) + 1 AS position
  FROM TABLE t
 WHERE t.name = 'Beta'</code>

このメソッドは、並列行に対して同じ位置を返し、最初のクエリとは異なる結果セットを提供する可能性があります。

以上が注文後に MySQL で行の位置を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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