sql >> データベース >  >> RDS >> Mysql

mysqlテーブルのエントリのランキング

    最初にテーブルを並べ替えるか、ランクを保存しない限り、何かの順序(ランクと呼ばれるもの)を計算する方法はありません。

    ただし、テーブルに適切なインデックスが付けられている場合(人気のインデックス)、データベースがこれを並べ替えてランクを取得するのは簡単です。次のようなものを提案します:

    ランクを含むすべてを選択

    SET @rank := 0;
    SELECT t.*, @rank := @rank + 1
    FROM table t
    ORDER BY t.popularity;
    

    特定の「id」を持つアイテムをフェッチするには、次のようにサブクエリを使用するだけです。

    ランクを含めて1つ選択してください

    SET @rank := 0;
    SELECT * FROM (
      SELECT t.*, @rank := @rank + 1
      FROM table t
      ORDER BY t.popularity
    ) t2
    WHERE t2.id = 1;
    


    1. PerconaXtraDBクラスターの監視-主要な指標

    2. SELECT * FROM table_name \Gの\Gはなぜですか?

    3. 複数のANDステートメントを含むMySQLクエリは1つを無視しているようです

    4. ハイブリッドクラウドにデプロイされたGaleraクラスターのディザスタリカバリ