MySQL はカスタムシーケンスを使用して row_number 関数を実装します (詳細な手順)

MySQL はカスタムシーケンスを使用して row_number 関数を実装します (詳細な手順)

いくつかの記事を読んだ後、ようやく MySQL で row_number() ソートを実装する方法が分かりました。

では早速、コードをお見せしましょう。

ステップ 1: テーブルを作成する:

成績表を作成する(
`名前` varchar(10),
`subject` varchar(10)、
`スコア` int(10)
)

ステップ2: データの書き込み

成績に挿入(名前、科目、スコア)
値('シャオミン', '中国語', 85),
(「小花」、「中国人」、89)、
(「シャオ・リー」、「中国人」、91)、
(「小芳」、「中国人」、93)、
(『暁明』『数学』77)
(『小花』『数学』95)
(『小李』『数学』、83)、
(『小芳』『数学』、88)、
(「暁明」、「英語」、90)、
(「小花」、「英語」、92)、
(「シャオ・リー」、「英語」、85)、
(「小芳」、「英語」、88)

データは次のとおりです。

ステップ3:
要件: 各科目で2番目の生徒を見つける

まず、並べ替えます。

名前、科目、スコアを選択 
成績から
科目、スコア降順で並び替え

データは次のとおりです。

次に、各科目をグループごとに分類します

(@i:=case @subject_pre=t1.subject then @i+1 else 1 end) を rn として選択します。
t1.*,
(@subject_pre:=件名) 
から (
    名前、科目、スコアを選択 
    成績から
    科目、スコア降順で並び替え
) t1, 
(@i:=0、@subject_pre:='' を選択) を t2 として
科目、スコア別にグループ化
科目、スコア降順で並び替え

説明すると:
前の件名を記録するために比較項目 subject_pre を追加します。
自己増加シーケンスを追加して、index+1 関数を実装します。
データは既に整列しているため、指し示された主題が前に格納された主題と同じ場合は、シーケンス番号が 1 増加され、そうでない場合は、シーケンス番号が 1 から再計算されます。
これにより、グループソートが実現されます。

最後にrn=2のデータを取り出す

名前、科目、スコアを選択してください(
(@i:=case @subject_pre=t1.subject then @i+1 else 1 end) を rn として選択します。
t1.名前、
t1.主題、
t1.スコア、
(@subject_pre:=件名) 
から (
名前、科目、スコアを選択 
成績から
科目、スコア降順で並び替え
) t1, 
(@i:=0、@subject_pre:='' を選択) を t2 として
科目、スコア別にグループ化
科目、スコア降順で並び替え
)
ここでrn=2

最終結果は次のとおりです。

このように、row_number() 関数は mysql を使用して実装されます。

インターネットで見つけた情報の多くは明確に書かれていないので、ここでは例を使ってこの実装をわかりやすく説明します。お役に立てれば幸いです。

MySQL でカスタムシーケンスを使用して row_number 関数を実装する方法についての記事はこれで終わりです。MySQL row_number 関数の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MYSQL row_number() および over() 関数の詳細な使用方法
  • MySQLにおけるrow_numberの実装プロセス
  • Mysql 行番号() ソート関数の使い方と注意点

<<:  Vueのレスポンシブシステムの原理の詳細な説明

>>:  HTML ページはダーク モードの実装をサポートします

推薦する

Vueはキャンバスを使用して画像圧縮アップロードを実現します

この記事では、キャンバスを使用して画像圧縮アップロードを実現するVueの具体的なコードを参考までに共...

よく使われるn番目の子セレクターをまとめる

序文フロントエンドプログラミングでは、奇数、偶数などの数値を受け入れることができる nth-chil...

Mysql5.7.18 のインストールとマスタースレーブレプリケーションの詳細なグラフィック説明

CentOS6.7にmysql5.7.18をインストールする 1. /usr/localディレクトリ...

最新のウェブフロントエンドフレームワーク10選を紹介(翻訳)

Web 開発の世界では、フレームワークは非常に一般的です。新しいフレームワークやテンプレートが毎日の...

MySQLの高可用性と高パフォーマンスのクラスタを構築する方法

目次MySQL NDB Clusterとはクラスター構築のための準備作業クラスターのデプロイを開始す...

Alibaba Cloud Docker Yum ソースを使用した Docker 17.03.2 の CentOS7 オンラインインストールの詳細説明

参照ドキュメント公式 Docker インストール ドキュメント: https://docs.dock...

MySQL 5.7 のキーワードと予約語の詳細な説明

序文MySQL と Oracle のキーワードはまったく同じではありません。Oracle データベー...

MySQL 5.7.16 のインストールと設定方法のグラフィック チュートリアル (Ubuntu 16.04)

Ubuntu 16.04 に MySQL 5.7 をインストールするにはどうすればいいですか?メイ...

VMware Workstation 14 Pro(仮想マシン)にシステムをインストールする方法の詳細な説明

この記事では、VMware Workstation 14 Pro (仮想マシン) にシステムをインス...

Vueのライブ放送機能の詳しい説明

最近、会社でたまたま生放送をしていたのですが、今日は私が遭遇した落とし穴を記録します。会社のサーバー...

Vue はチャット ボックスで絵文字を送信する機能を実装します

vueチャットボックスで絵文字を送信し、vueインターフェースで絵文字を送信するための具体的なコード...

Linux での grep コマンドの使い方の詳細な説明

1. 公式紹介grep は Linux でよく使用されるコマンドです。これは、ファイルやテキストに対...

Linux システムで IPv6 をサポートするように Nginx を設定する方法

1. 既存のnginxがipv6をサポートしているかどうかを確認する既存の nginx が ipv6...

Node.jsをゼロから学ぶ

目次URL モジュール1. 解析メソッド2. フォーマット方法3. 解決方法イベントモジュール(イベ...

IntelliJ IDEA に Docker プラグインをインストールする詳細な手順 (2018 バージョン)

目次1. 開発環境2. dockerプラグインをインストールする1. アイデアのインストール2. イ...