ホームページ >データベース >mysql チュートリアル >MySQL `ORDER BY` クエリで特定のエントリの行位置を取得する方法
MySQL の行位置を選択 ORDER BY
クエリ
id
と name
の 2 つの列を持つ MySQL テーブルがあり、目的は 1 つの行と、name
列で昇順にソートされたテーブル内のその位置を取得することであるとします。望ましい結果の形式は、列 id
、position
、および 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>
このクエリでは、サブクエリは name
値の順序に基づいて各行の位置を計算します。ユーザー定義変数 @rownum
は、一意の位置を割り当てるために使用されます。次に、メイン クエリは結果をフィルター処理して、目的の name
値「Beta」を取得します。
また、次のクエリは、同じ名前のケースを解決するランキングを提供します:
<code class="language-sql">SELECT t.id, (SELECT COUNT(*) FROM TABLE x WHERE x.name <= t.name) AS position, t.name FROM TABLE t WHERE t.name = 'Beta';</code>
このクエリは、現在の行の name
値以下の name
値を持つ行の数を数えることによって位置を計算します。どちらのメソッドも、並べ替えられた結果セット内の行の位置を決定する方法を提供します。
以上がMySQL `ORDER BY` クエリで特定のエントリの行位置を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。