MYSQL は、指定されたユーザーのランキングとクエリを実装します。ランキング関数 (並列ランキング関数) のサンプルコード

MYSQL は、指定されたユーザーのランキングとクエリを実装します。ランキング関数 (並列ランキング関数) のサンプルコード

序文

この記事は主に、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 を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • ランキングを取得するためのMySQLソートの例コード
  • MySQL ページアクセス統計とランキング
  • MySQL でカスタム フィールド クエリ結果にランキングを追加する方法
  • MySQL のグループ化により、group by と order by の調査で各グループの最初の数件のレコードを取得します (ランキング)
  • MySQL における一般的なランキングの問題をいくつかまとめます

<<:  Maven+Tomcat 基本イメージを構築する Docker の実装

>>:  WeChatミニプログラム開発のためのコンポーネント設計仕様

推薦する

mysql 8.0.12 winx64 のダウンロードとインストールのチュートリアル

MySQL 8.0.12のダウンロードとインストールのチュートリアルは参考までに、具体的な内容は次の...

JavaScript ドキュメント オブジェクト モデル DOM

目次1. JavaScriptはページ内のすべてのHTML要素を変更できる1. IDでHTML要素を...

CSSはリストのスタイルを設定し、ナビゲーションメニューの実装コードを作成します。

1. リストシンボルを設定するlist-style-type: attribute; //リストの...

W3C チュートリアル (3): W3C HTML アクティビティ

HTML は、World Wide Web 上で公開するために使用されるハイブリッド言語です。 XH...

MySQL 8.0.11 圧縮版のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0圧縮パッケージのインストール方法、詳細は次のとおりです知らせ:オペレーティング シ...

関数の分類の詳細な説明とJavascriptでのこのポイントの例

JS で関数を定義する 3 つの方法例を挙げて説明しましょう。 <スクリプト> //メソ...

フォームデータを取得するための Node.js メソッドの 3 つの例

序文Nodejs はサーバーサイド言語です。開発中、登録やログインなどでは、判断のためにフォームを通...

NginxはGzipアルゴリズムを使用してメッセージを圧縮します

HTTP圧縮とは場合によっては、比較的大きなメッセージ データがクライアントとサーバー間で送信され、...

Vue テンプレート構成と Webstorm コード形式仕様設定

目次1. コンパイラコードフォーマット仕様設定2. Vueテンプレートの設定1. コンパイラコードフ...

HTML CSS の 3 つの一般的なスタイル セレクター

1: タグセレクタータグセレクターはすべてのタグに使用されます。ここでは p を例に挙げます。つまり...

Vue3 でモバイル ログインおよび登録モジュールをエレガントに実装する方法

目次序文入力ボックスコンポーネントレイアウトvモデルデータ検証ルール設計形状サブコンポーネントは検証...

tomcatでcatalina.outログをカットする3つの方法の詳細な説明

1. ログセグメンテーションのためのLog4j 1) log4j-1.2.17.jar、tomcat...

Linux システム ディスクのフォーマットとスワップ パーティションの手動追加

Windows: NTFS、FATをサポートLinux は次のファイル形式をサポートしています: C...

Dreamweaver で Zen コーディングを使用する方法

前回の記事「Zen Coding: HTML/CSS コードを素早く記述する方法」を公開した後、一部...

Linux コマンドラインでパケットをキャプチャするために tcpdump を使用するいくつかの機能

tcpdump は、ネットワークの問題のトラブルシューティングに効果的に役立つ、柔軟で強力なパケット...