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

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

Susan Sarandon
リリース: 2025-01-21 23:56:10
オリジナル
504 人が閲覧しました

How to Add Row Numbers to Sorted Data in MySQL?

MySQL でソートされたデータの行番号を追加します

MySQL でソートされたデータを操作する場合、各レコードの行番号を取得すると、提供される情報が強化され、より詳細な分析が容易になります。この記事では、純粋な SQL を使用してこれを実現する方法を検討し、Java またはその他のプログラミング言語での後処理を回避するソリューションを提供します。

データベーステーブル構造

フィールド「orderID」と「itemID」を持つ「orders」という名前の次のテーブルについて考えてみましょう。

<code class="language-sql">mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field       | Type                | Null | Key | Default | Extra          |
+-------------+---------------------+------+-----+---------+----------------+
| orderID     | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| itemID      | bigint(20) unsigned | NO   |     | NULL    |                |
+-------------+---------------------+------+-----+---------+----------------+</code>
ログイン後にコピー

元のクエリ

最初に、クエリを使用して各 itemID の注文数を取得します:

<code class="language-sql">SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;</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>
ログイン後にコピー

説明

  • SET @rank=0;: これにより、ユーザー定義変数 @rank が 0 に初期化され、行番号のカウンターとして機能します。
  • SELECT @rank:=@rank 1 AS Rank, itemID, COUNT(*) as ordercount: クエリのこの部分は次のことを行います:
    • 行ごとに @rank を 1 ずつインクリメントし、結果の「ランク」列に新しい値を割り当てます。
    • 元のクエリの「itemID」列と「ordercount」列を保持します。
  • ORDER BY ordercount DESC: この句は、行が「ordercount」フィールドに基づいて降順でソートされることを保証します。
  • SELECT @rank: 最後の SELECT ステートメントは、結果セット内の行の合計数を表す @rank の最終値を取得します。

結果の改善

変更したクエリを実行すると、次の拡張された結果が得られます:

<code>+------+--------+------------+
| rank | itemID | ordercount |
+------+--------+------------+
| 1    | 388    | 3          |
| 2    | 234    | 2          |
| 3    | 3432   | 1          |
| 4    | 693    | 1          |
| 5    | 3459   | 1          |
+------+--------+------------+</code>
ログイン後にコピー

ご覧のとおり、各行には、並べ替えられた結果セット内での位置を示す追加の「ランク」列が追加されました。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート