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 ページはダーク モードの実装をサポートします

推薦する

CSS3で背景画像にカラーマスクを追加する方法

以前、開発中に背景レイヤーにカラーマスクを追加する必要のあるプロジェクトに遭遇しました。ここでは、背...

MySQL 8の新機能ウィンドウ関数の役割

MySQL 8.0 の新機能は次のとおりです。 Unicode 9.0 をすぐに完全にサポートウィン...

便利なモバイルスクロールプラグイン BetterScroll

目次スクロールをスムーズにするBetterScrollのスクロール体験慣性ローリングエッジリバウンド...

MySQL 8.0.14 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.14のインストールと設定のプロセスを記録しています。具体的な内容は...

MySQLの7種類のログの概要

MySQL には次のログ ファイルがあります。 1: 再実行ログ2: ロールバックログ(元に戻すログ...

MySQL データベース インデックスが B+ ツリーの使用を選択するのはなぜですか?

MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...

Linux ディスク領域解放問題の概要

IDC のサーバーの /partition 使用率がいっぱいです。 100% に到達しました!確認し...

CSSスタイルとセレクターの使い方

HTML で CSS を使用する 3 つの方法: 1. インラインスタイル: 要素のスタイル属性を通...

一般的なテーブルコンポーネントの Vue カプセル化の完全な手順記録

目次序文テーブル コンポーネントをカプセル化する必要があるのはなぜですか?ステップ1: 共通コンポー...

Dockerのインストール、イメージの作成、NodeJSプログラムの読み込みと実行の詳細なプロセス

システム環境: Windows 7 1. DockerをインストールするDocker公式サイトからd...

Vue プロジェクトにインターフェース リスニング マスクを追加する方法

1. 事業背景マスク レイヤーを使用してユーザーの異常な操作を遮断する方法は、フロントエンドでよく使...

Docker+Selenium Grid に基づく技術アプリケーションをテストするためのサンプル コード

Selenium Grid の紹介Selenium Grid のいくつかの新しい機能は、今後リリース...

html+vue+element-ui のスムーズさを 1 分で体験

テクノロジーファンHTMLウェブページ、知っておくべきYouyou が開発した vue フロントエン...

HTML 5.1 学習: 14 の新機能とアプリケーション例

序文ご存知のとおり、HTML5 はインターネット コミュニティ全体に標準を提供する組織である Wor...

追加、削除、変更、クエリを実行するための JS 操作オブジェクト配列のサンプルコード

1. はじめに最近、私は友人が JSON 配列を追加、削除、変更するための簡単なページを作成するのを...