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

推薦する

複雑なウェブサイトのナビゲーションを簡素化

<br />ナビゲーション設計は構造設計における主要なタスクの 1 つです。ソフトウェア...

Vueは動的ルーティングの詳細を実装します

目次1. フロントエンド制御1. router.js ファイル内 (router.js にそれぞれ静...

40 CSS/JSスタイルと機能的な技術処理

1-ドロップダウン選択ボックスのスタイル設定 - ドロップダウン リストを変更します。 2- <...

シンプルなカルーセル効果を実現するJavaScript

カルーセルとは何ですか?カルーセル: モジュールまたはウィンドウで、コンピューターでマウスをクリック...

Docker での Tomcat インストールの 404 問題の解決方法

tomcat の containerID を見つけて、tomacat ディレクトリに入ります。 [r...

Win10環境にMysql5.7.23をインストールする際の問題点と落とし穴

たくさんのチュートリアルを読みましたが、うまくインストールできませんでした。しばらく試行錯誤した後、...

流星効果を実現する JavaScript キャンバス

この記事では、JavaScriptキャンバスで流星の特殊効果を表示するための具体的なコードを参考まで...

MySQLを使用して列内の異なる値の数をカウントする例

序文この記事で実装されている要件は、実際には非常に一般的です。たとえば、ユーザーが登録したチャネルを...

eCharts でパーセンテージ付きの横棒グラフを実装する方法

目次サンプルコードレンダリングコード分​​析要約するサンプルコード var データ = [220, ...

Docker が elasticsearch を起動するときのメモリ不足の問題と解決策

質問Docker が elasticsearch をインストールして起動するときにメモリが不足するシ...

Mysqlチュートリアルでのグループランキングの実装例の詳細な説明

目次1. データソース2. データの総合順位1) 総合ランキング2) 同順位3) 同順位3. データ...

単一の MySQL テーブル内の行数が 500 万を超えてはいけないのはなぜですか?

今日は、興味深いトピックについてお話ししましょう。データベースとテーブルを分割することを検討する前に...

Vueコンポーネントは、写真やビデオをアップロードするためのサンプルコードをカプセル化します

まず依存関係をダウンロードします: cnpm i -S vue-uuid ali-oss画像フィール...

CSS で放射状グラデーションを使用してカード効果を実現する

数日前、同僚がポイントモールプロジェクトを受け取りました。このプロジェクトには、カードやクーポンをギ...

React.cloneElement の使い方の詳しい説明

目次cloneElementの役割使用シナリオ新しい小道具を追加するプロップを変更するイベントカスタ...