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>
説明
結果の改善
変更したクエリを実行すると、次の拡張された結果が得られます:
<code>+------+--------+------------+ | rank | itemID | ordercount | +------+--------+------------+ | 1 | 388 | 3 | | 2 | 234 | 2 | | 3 | 3432 | 1 | | 4 | 693 | 1 | | 5 | 3459 | 1 | +------+--------+------------+</code>
ご覧のとおり、各行には、並べ替えられた結果セット内での位置を示す追加の「ランク」列が追加されました。
以上がMySQL でソートされたデータに行番号を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。