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 サイトの他の関連記事を参照してください。