MySQLは変数を使用してさまざまなソートを実装します

MySQLは変数を使用してさまざまなソートを実装します

コアコード

-- 以下では、MySQLでのソート列の実装を示します -- テストデータ CREATE TABLE tb
(
スコアINT
);
挿入tb選択 
5 結合 すべて選択 
4 すべて結合 選択 
4 すべて結合 選択 
4 すべて結合 選択 
3 結合 すべて選択 
2 結合 すべて選択
1;
--1. row_number ソート SET @row_number =0;
SELECT @row_number := @row_number+1 AS row_number,score 
tbより 
ORDER BY スコア DESC ;
+------------+--------+
| 行番号 | スコア |
+------------+--------+
| 1 | 5 |
| 2 | 4 |
| 3 | 4 |
| 4 | 4 |
| 5 | 3 |
| 6 | 2 |
| 7 | 1 |
+------------+--------+
--2. 高密度ランクソート SET @dense_rank = 0, @prev_score = NULL;
SELECT @dense_rank :=IF(@prev_score=score,@dense_rank,@dense_rank+1) AS decnse_rank,
  @prev_score := スコア AS スコア 
tbより 
ORDER BY スコア DESC ; 
+-------------+--------+
|decns_rank | スコア |
+-------------+--------+
| 1 | 5 |
| 2 | 4 |
| 2 | 4 |
| 2 | 4 |
| 3 | 3 |
| 4 | 2 |
| 5 | 1 |
+-------------+--------+
--3. ランクソート SET @row=0,@rank=0,@prev_score=NULL;
@row:=@row+1 を ROW として選択します。
    @rank:=IF(@prev_score=score,@rank,@row) AS ランク、
    @prev_score:=スコア AS スコア
tbより 
ORDER BY スコア DESC;
+------+------+-------+
| ROW | ランク | スコア |
+------+------+-------+
| 1 | 1 | 5 |
| 2 | 2 | 4 |
| 3 | 2 | 4 |
| 4 | 2 | 4 |
| 5 | 5 | 3 |
| 6 | 6 | 2 |
| 7 | 7 | 1 |
+------+------+-------+

以下もご興味があるかもしれません:
  • MySQL 8.0.12 のインストールと環境変数の設定チュートリアル (Win10 の場合)
  • MySQLでグローバル変数とセッション変数を設定する2つの方法の詳細な説明
  • MySQL 5.6.23 のインストールと設定環境変数のチュートリアル
  • MySQL 8 の新機能: 永続的なグローバル変数を変更する方法
  • MySQLクエリステートメント内のユーザー変数のコード分析
  • MySQL 変数宣言とストアド プロシージャの分析
  • いくつかの重要なMySQL変数
  • MySQL ストアド プロシージャにおける変数の宣言と設定の違いについて簡単に説明します。
  • MySQL 変数の原理と応用例

<<:  vite2.x は ant-design-vue@next コンポーネントのオンデマンド読み込みを実装します。

>>:  Docker でローカルにイメージをインポート/保存/読み込み/削除する方法

推薦する

スライドボタン効果を実現するネイティブJS

Jsで作ったスライドボタンの具体的なコードは参考までに。具体的な内容は以下のとおりですまずエフェク...

Nginx の realip モジュールの使い方の基礎学習

序文nginx モジュールには、公式とサードパーティの 2 種類があります。nginx のインストー...

シンプルなショッピングフォームを実装するJavaScript

この記事では、簡単なショッピングフォームを実装するためのJavaScriptの具体的なコードを参考ま...

mysql コマンドライン スクリプトの実行例

この記事では、例を使用して MySQL コマンドライン スクリプトの実行について説明します。ご参考ま...

mysql+mycat、負荷分散、マスタースレーブレプリケーション、読み取り/書き込み分離操作に基づく安定した高可用性クラスタを構築します。

データベースのパフォーマンス最適化には、一般的にクラスタリングが採用されています。Oracle クラ...

Nginx+Apache の動的および静的分離の導入の詳細な例

Nginx の動的および静的分離の概要Nginx は静的処理能力が強力ですが、動的処理能力が不十分で...

CSS スタイルの優先順位はどれくらい複雑ですか?

昨晩、面接の質問を見ていたら、CSS スタイルの優先順位について特に明確に説明していない人が何人かい...

docker ポートを追加して dockerfile を取得する方法

DockerイメージからDockerfileを取得する docker 履歴 --format {{....

TypeScript の条件型に関する詳細な読書と実践記録

目次ジェネリック型での条件型の使用ツールタイプ脱出ポッド矢印関数で条件型を使用する型推論による条件型...

mysql8.0.11クライアントがログインできない問題の解決方法

この記事では、mysql8.0.11クライアントがログインできない問題の解決策を紹介します。参考まで...

$remote_addr に基づく nginx フロントエンド配布方法の詳細な説明

要件は次のとおりです。ドメイン名の下に複数のサーバーがあります。現在、特定の地域をテストしています。...

Vue ページでよりエレガントに画像を紹介する方法

目次エラーのデモンストレーション計算により画像が変わらない場合は直接インポートするCSS変数による画...

Docker ケース分析: MySQL データベース サービスの構築

目次1 設定ディレクトリとデータディレクトリを作成する3 イメージからホストに構成ファイルをコピーす...

MySQL で遅いファジークエリを最適化する方法

目次1. はじめに: 2. 最初のアイデアはインデックスを構築することです3. 命令P.S. Lik...

Nginx+SSL による双方向認証を実装するためのサンプル コード

まずディレクトリを作成する cd /etc/nginx mkdir ssl cd ssl CA と自...