ホームページ >データベース >mysql チュートリアル >MySQL でソートされた SELECT 結果に行番号を追加するにはどうすればよいですか?

MySQL でソートされた SELECT 結果に行番号を追加するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-22 00:08:11491ブラウズ

How to Add Row Numbers to Sorted SELECT Results in MySQL?

MySQL: ソートされた SELECT 結果から行番号を取得します

質問:

MySQL の SELECT ステートメントでソートされた項目の行番号を取得するにはどうすればよいですか?

背景:

列「orderID」と「itemID」を含む「orders」というテーブルについて考えてみましょう。以下に示すクエリは、「itemID」によって注文数量を計算します:

<code class="language-sql">SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID
ORDER BY ordercount DESC;</code>

このクエリは項目数を返しますが、行番号は返しません。

解決策:

行番号を取得するには、次の手法を使用します:

  1. 現在の行番号を保存する変数を初期化します:
<code class="language-sql">SET @rank=0;</code>
  1. 変数を使用して行番号を割り当てるように元のクエリを変更します:
<code class="language-sql">SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID
ORDER BY ordercount DESC;</code>
  1. 別の SELECT ステートメントを実行して、最終的な行数を取得します:
<code class="language-sql">SELECT @rank;</code>

例:

次のクエリは行番号と項目数を返します:

<code class="language-sql">SET @rank=0;
SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount
  FROM orders
  GROUP BY itemID
  ORDER BY ordercount DESC;
SELECT @rank;</code>

出力:

<code>1 | 388 | 3
2 | 234 | 2
3 | 693 | 1
4 | 3432 | 1
5 | 3459 | 1</code>

最終行数は 5 です。

以上がMySQL でソートされた SELECT 結果に行番号を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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