序文 この記事は主に、MYSQL でランキングを実現し、指定ユーザーランキング関数 (並列ランキング関数) をクエリすることに関する関連コンテンツを紹介し、皆さんの参考と学習のために共有します。詳しい紹介を見てみましょう。 テーブル構造: テーブルtest.testsortを作成します( id int(11) NOT NULL AUTO_INCREMENT、 uid int(11) デフォルト 0 コメント 'ユーザーID', スコア 小数点(10, 2) デフォルト 0.00 コメント 'スコア', 主キー (id) ) エンジン = INNODB AUTO_INCREMENT = 1 文字セット utf8 utf8_general_ci を照合する COMMENT = 'テストソート' ROW_FORMAT = 動的; アイデア:最初に並べ替えてから結果に番号を付けることができます。また、最初に結果をクエリしてから並べ替えて番号を付けることもできます。 例: @rownum := @rownum + 1 この文では、代入に := が使用されています。つまり、最初に @rownum + 1 が実行され、次に値が @rownum に割り当てられます。 (SELECT @rownum := 0) r この文は、rownum フィールドの初期値を 0 に設定する、つまり番号付けが 1 から始まることを意味します。 ランキング達成: 方法1: SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r、(SELECT * FROM testsort ORDER BY score DESC) AS t; 方法2: SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r、テストソート AS t ORDER BY t.score DESC; 結果: 指定したユーザーのランキングを表示します。 方法1: b.* を選択 ( SELECT t.*, @rownum := @rownum + 1 AS rownum (SELECT @rownum := 0) rから、 (SELECT * FROM testsort ORDER BY score DESC) AS t ) AS b WHERE b.uid = 222; 方法2: b.* を選択 ( SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r、テストソート AS t t.score で並べ替え DESC ) は b であり、b.uid は 222 です。 結果: 同順位(同じスコアで同じ順位)を達成するには: 選択 オブジェクトID、 obj.スコア、 場合 @rowtotal = obj.score の場合 @rownum @rowtotal := obj.score の場合 @rownum :=@rownum + 1 @rowtotal = 0 の場合 @rownum :=@rownum + 1 END AS 行番号 から ( 選択 uid、 スコア から テストソート 注文する スコアDESC ) AS オブジェクト、 (SELECT @rownum := 0 、@rowtotal := NULL) 指定されたユーザーのランキングを照会します。 合計を選択します。* FROM (選択 オブジェクトID、 obj.スコア、 場合 @rowtotal = obj.score の場合 @rownum @rowtotal := obj.score の場合 @rownum :=@rownum + 1 @rowtotal = 0 の場合 @rownum :=@rownum + 1 END AS 行番号 から ( 選択 uid、 スコア から テストソート 注文する スコアDESC ) AS オブジェクト、 (SELECT @rownum := 0 、@rowtotal := NULL) r) AS total WHERE total.uid = 222; 要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: Maven+Tomcat 基本イメージを構築する Docker の実装
>>: WeChatミニプログラム開発のためのコンポーネント設計仕様
序文Linux カーネルでは、元のコードとの互換性を保つため、または特定の仕様に準拠するため、また現...
1. 単一テーブルクエリ -> 更新 テーブル名の更新 フィールド1=新しい値1、フィールド2...
目次1. データベース論理バックアップとはどのようなバックアップですか? 2. よく使われる論理バッ...
現在のトランザクションはどの履歴バージョンを読み取ることができますか?読み取りビューは、トランザクシ...
準備する:教師テーブルと生徒テーブルを定義し、生徒テーブルで教師テーブルIDを参照します。テーブルt...
1. mysqlbinlog: [エラー] 不明な変数 'default-character...
JavaScriptゲームSnakeの実装アイデア(完全なコード実装)を参考までに説明します。具体...
1.ページを XML タイプとして宣言しないでください。ページでは UTF-8 または UTF-16...
Linux の ps コマンドは Process Status の略です。 ps コマンドは、システ...
MySQL5.7.21のインストールとパスワード設定のチュートリアルは次のとおりです。公式リファレン...
目次1. はじめに1.1 原則1.2 プロセス1.3 特徴1.4 githubアドレス2. テスト環...
今日、新しい技を学びました。あまりやったことがなかったので、今まで知りませんでした...目的: リン...
目次1. はじめに2. 原則III. 実践3.1 インデックスプッシュダウンを使用しない3.2 イン...
目次マスタースレーブレプリケーションメカニズム非同期レプリケーション準同期レプリケーションマスタース...
Dockerの概要Docker はオープンソースのソフトウェア展開ソリューションです。 Docker...