MySQLにおけるrow_numberの実装プロセス

MySQLにおけるrow_numberの実装プロセス

1. 背景

一般的に、データ ウェアハウス環境では、row_number 関数を使用して特定のディメンションに従ってデータをグループ化し、各グループ内のデータ番号を並べ替える効果を簡単に実現できます。下の図に示すように、これは MySQL 環境で生成された効果図です。ここでのグループ化は lcid に基づいており、num は row_number 関数によって達成される効果に相当します。

MySQL環境でrow_number効果を実装する

2. 実施プロセス

1. MySQL変数を設定する

2つの変数を設定する

set @row_number:=0; --lcid_no の判定結果に従って row_number シーケンス番号を生成します。set @lcid_no:= 0; --各行の lcid 列データを取得し、前の行の lcid データと比較します。同じ場合は 1 増加し、そうでない場合は 1 になります。

2. 使用例

SELECT @行番号:=CASE
    @lcid_no = s.lcid の場合、@row_number + 1 
    その他 1
    END AS num、
    @lcid_no:=s.lcid AS lcid、
	  s.lcid
r_qcloud_approval_fh_d s から、(@orw_number:=0、@lcid_no:=0 を選択) t
ORDER BY s.lcid;

3. プロセス分析<br /> 同一データが複数ある場合
1) 初期状態では、カーソルは最初のデータを指し示しています。この時点では、lcid_no = 0 であり、lcid_no は lcid と等しくないため、row_number = 1 となります。
2) カーソルは2番目のデータを指し、lcid_no = 前のデータの lcid です。前のデータの lcid = 現在の行の lcid なので、row_number = 2 です。
重複データなし
1) 初期状態では、カーソルは最初のデータを指し示しています。この時点では、lcid_no = 0 であり、lcid_no は lcid と等しくないため、row_number = 1 となります。

3. 使用シナリオ

MySQL のようなリレーショナル データベースには row_number 関数はありません。

これで、MySQL の row_number の実装プロセスに関するこの記事は終了です。MySQL の row_number に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MYSQL row_number() および over() 関数の詳細な使用方法
  • PostgreSQL ROW_NUMBER() OVER() の使用方法の説明
  • postgreSQL での row_number() と distinct の使用
  • Postgresql の rank() over、dense_rank()、row_number() の使用法の違い
  • SQL Server の row_number 関数の一般的な使用例の詳細
  • 4 つの主要な SQL ランキング関数 ROW_NUMBER、RANK、DENSE_RANK、NTILE の使用方法の紹介
  • SQL ROW_NUMBER() および OVER() メソッドのケーススタディ

<<:  deepin apt コマンドを使用して最新バージョンの docker をインストールする方法

>>:  Node.jsをゼロから学ぶ

推薦する

DockerコンテナがSongtiなどのフォントを認識しない場合の解決策

問題の背景: docker を使用してプロジェクトをデプロイする場合、プロジェクト内で印刷コントロー...

HTML フレームセットのサンプルコード

この記事では、Frameset が作成した、できるだけシンプルなフレームワークを紹介します。さて、ま...

MySQL データベースの基礎を始めるための一般的なコマンドの概要

この記事では、MySQL データベースの基礎を学ぶためによく使用されるコマンドを例を使って説明します...

優れたウェブサイトのコピーライティングと優れたユーザーエクスペリエンス

ウェブサイトを見るというのは、実は美しい女性を評価するようなものです。見た目を見るとき、私たちは見た...

uniappのグローバル変数実装の詳細な説明

序文この記事では、uniapp グローバル変数の実装方法をいくつかまとめています。詳細な知識は、uV...

Navicat for Mysql 接続エラー 1251 (接続失敗) の問題を解決する

以前書いた内容が詳細さに欠けていたため、今回は修正・補足しました。ただし、以前の MySQL バージ...

Nginx 1つのドメイン名で複数のプロジェクトにアクセスする方法の例

背景最近、複数のプロジェクトを展開する際に、1 つのドメイン名で複数のプロジェクトにアクセスする方法...

ストアド プロシージャでエラー状態をトリガーする mysql ストアド プロシージャの分析例 (SIGNAL および RESIGNAL ステートメント)

この記事では、例を使用して、MySQL がストアド プロシージャで引き起こすエラー状態 (SIGNA...

Vue ルーティング this.route.push ジャンプ ページが更新されない場合の解決策

Vue ルーティング this.route.push ジャンプ ページが更新されない1. 背景概要:...

MySQL レプリケーションの原理と実際のアプリケーションの詳細な説明

この記事では、例を使用して、MySQL レプリケーションの原理と実際のアプリケーションについて説明し...

CSSを使用してTDのINPUTの幅を設定する

最近、C# を使用して Web プログラムを作成していたときに、次のような問題が発生しました。 Te...

Flash での HTML と CSS の適用

Flash での HTML と CSS の適用:同僚の Den が Flash で HTML と C...

MySQL 5.7 解凍版のインストール、アンインストール、および文字化けしたコードの問題のグラフィック解決

1. 解凍版のインストール(1)圧縮パッケージをダウンロードし、ディスクの場所に解凍します。圧縮パッ...

MySQL で特定の日、月、または年のデータをクエリするためのコードの詳細な説明

今日 テーブル名から * を選択します。ここで、to_days(時間フィールド名) = to_day...

Ubuntu 20.04は静的IPアドレスを設定します(異なるバージョンを含む)

Ubuntu 20.04はnetplanを通じてネットワークを管理するため、以前のバージョンとは少...