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

推薦する

React.FCとReact.Componentの使用に関する簡単な説明

目次1. React.FC<> 2. クラスxxはReact.Componentを拡張し...

88 秒で 1,000 万件のレコードを MySQL データベース テーブルに挿入する方法

私が使用しているデータベースはMySQLデータベースバージョン5.7ですまずデータベーステーブルを自...

Vueのリストレンダリングの詳細な説明

目次1. v-for: 配列の内容を走査する(よく使われる) 2. v-for: オブジェクトのプロ...

JavaScriptのvar let constの違いは何ですか?

目次1. 繰り返し宣言1.1 変数1.2 しましょう1.3 定数2. 可変プロモーション2.1 変数...

外部ネットワークアクセスを許可するためのMysql5.6の設定手順の詳細を共有する

最近、MySQL 5.6 を導入しましたが、デフォルトでは MySQL はローカル サービスのみを許...

MySQL 8.0 でリモートアクセス権限を設定する方法

前回の記事では、MySQL パスワードをリセットする方法を説明しました。一部の学生から、データベース...

Vueでaxiosをカプセル化するいくつかの方法

目次ベーシックエディションステップ1: Axiosを構成するステップ2: リクエストをカプセル化する...

JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明

JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明最近、...

SpringBootはActiviti7実装コードを統合する

Activiti7 の正式リリース以降、SpringBoot2.x との統合開発を全面的にサポートし...

Vueは水平の斜めの棒グラフを実装します

この記事では、水平傾斜棒グラフを実装するためのVueの具体的なコードを参考までに共有します。具体的な...

CentOS7 での PostgreSQL 11 の詳細なインストールと設定のチュートリアル

1. 公式ウェブサイトアドレス公式サイトではインストールの参考手順が紹介されています。公式サイトを見...

親要素に対する CSS 子要素の配置の実装

解決親要素に position:relative を追加します。子要素に position:abso...

jQueryで劇場の座席選択と予約の効果を実現

jQueryは劇場の座席選択と予約の効果を実現します。参考までに、具体的な内容は次のとおりです。効果...

Linux インストール Redis 実装プロセスとエラー解決

今日、redis をインストールしたところ、今までになかったいくつかのエラーが発生しました。ここで記...

JavaScript での正規表現の使用について詳しく学ぶ

目次1. 正規表現とは何か1. 正規表現の特徴2. 正規表現の使用2. 正規表現における特殊文字1....