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ミニプログラム開発のためのコンポーネント設計仕様

推薦する

Linux 時間サブシステムの時間表現例の詳細な説明

序文Linux カーネルでは、元のコードとの互換性を保つため、または特定の仕様に準拠するため、また現...

MySQL で結果を選択して更新を実行する例のチュートリアル

1. 単一テーブルクエリ -> 更新 テーブル名の更新 フィールド1=新しい値1、フィールド2...

MySQL 論理バックアップとリカバリ テストの概要

目次1. データベース論理バックアップとはどのようなバックアップですか? 2. よく使われる論理バッ...

MySQL分離の使用手順を読む

現在のトランザクションはどの履歴バージョンを読み取ることができますか?読み取りビューは、トランザクシ...

MySQL 子テーブルで外部キー制約チェックを無効にする方法

準備する:教師テーブルと生徒テーブルを定義し、生徒テーブルで教師テーブルIDを参照します。テーブルt...

MySQL Binlog ログの読み取り時によくある 3 つのエラー

1. mysqlbinlog: [エラー] 不明な変数 'default-character...

スネークゲームのアイデアを実現するためのJavaScript

JavaScriptゲームSnakeの実装アイデア(完全なコード実装)を参考までに説明します。具体...

16 の XHTML1.0 と HTML の互換性ガイドラインの概要

1.ページを XML タイプとして宣言しないでください。ページでは UTF-8 または UTF-16...

Linux ps および pstree コマンドの知識ポイントのまとめ

Linux の ps コマンドは Process Status の略です。 ps コマンドは、システ...

MySQL 5.7.21 のインストールとパスワード設定のチュートリアル

MySQL5.7.21のインストールとパスワード設定のチュートリアルは次のとおりです。公式リファレン...

MySQL オンライン DDL ツール gh-ost 原理分析

目次1. はじめに1.1 原則1.2 プロセス1.3 特徴1.4 githubアドレス2. テスト環...

リンクをクリックしたときにファイルのダウンロードダイアログボックスをポップアップ表示するには、HTML で href を使用します。

今日、新しい技を学びました。あまりやったことがなかったので、今まで知りませんでした...目的: リン...

MySQL Index Pushdown (ICP) とは何かを理解するための記事

目次1. はじめに2. 原則III. 実践3.1 インデックスプッシュダウンを使用しない3.2 イン...

MySql マスタースレーブレプリケーションメカニズムの包括的な分析

目次マスタースレーブレプリケーションメカニズム非同期レプリケーション準同期レプリケーションマスタース...

Dockerコンテナの紹介

Dockerの概要Docker はオープンソースのソフトウェア展開ソリューションです。 Docker...