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 でローカルにイメージをインポート/保存/読み込み/削除する方法

推薦する

Vueは画像切り替え効果を実現

この記事の例では、画像切り替え効果を実現するためのVueの具体的なコードを参考までに共有しています。...

Nginx はリクエスト接続を統合し、ウェブサイトのアクセス例を高速化します

序文世界最高の Web サーバーの 1 つである Nginx の利点は明らかです。 Nginx がリ...

VueはCanvasを使用してランダムなサイズで重なり合わない円を生成します

目次キャンバス関連文書エフェクト画像表示ケースの完全なコード親コンポーネントコードサブコンポーネント...

CentOS の起動時に RabbitMq ソフトウェアを自動的に起動する方法

1. /etc/init.dディレクトリに新しいrabbitmqを作成します。 [root@loca...

HTML テーブル タグ チュートリアル (34): 行スパン属性 ROWSPAN

複雑なテーブル構造では、一部のセルが水平方向に複数のセルにまたがるため、行間属性 ROWSPAN を...

Vueでデータを読み取るためにこれを悪用しないでください

目次序文1. これを使用してデータ内のデータを読み取るプロセス2. Dep.target はいつ存在...

MySQLのインデックス選択と最適化の詳細な説明

目次インデックスモデルB+ツリーインデックスの選択インデックスの最適化インデックスの選択性カバーイン...

Ubuntu で時刻同期に NTP を使用する

NTP は、ネットワーク上で時間を同期するための TCP/IP プロトコルです。通常、クライアントは...

ウェブページの読みやすさを向上させるいくつかの方法

1. 対照的な色を使用します。ここでのコントラストとは、テキストの色と背景色のコントラストを指します...

JavaScript の 7 つのデータ型の詳細な説明

目次序文:詳しい紹介:練習する:要約する序文: Python、Java、Cシリーズなど、すべての主要...

React diffアルゴリズムソースコード分析

目次単一ノード差分単一要素を調整するマルチノード差分調整子配列ノードが移動したかどうかを判断するには...

Vue3におけるキーの役割と動作原理についての簡単な説明

このキー属性の機能は何ですか?まずは公式の説明を見てみましょう。 kekey 属性は主に、新しいノー...

Vue カードスタイルのクリックして切り替える画像コンポーネントの使用方法の詳細な説明

この記事では、vueカードスタイルのクリックして切り替える画像コンポーネントを参考までに紹介します。...

Dockerに証明書を追加する方法

1. アップグレードプロセス: sudo apt-get updateパッケージが見つからない、パッ...

Docker マルチステージビルドを使用してイメージサイズを縮小する方法

この記事では、Docker のマルチステージ ビルド機能を使用してイメージ サイズを大幅に削減する方...