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をゼロから学ぶ

推薦する

MySQLのルートパスワードをリセットする最も簡単な方法

私の MySQL バージョンは MYSQL V5.7.9 です。古いバージョンを使用してください: ...

アリババの中秋節ロゴとウェブサイトのデザインプロセス

<br />まずアイデアを考え、次にスケッチを描き、次にマウスでスケッチし、最後にフラッ...

MySQL で中国語を入力するときに発生するエラー 1366 の解決方法

MySQL で中国語を入力すると、次のエラーが発生します。エラー 1366: 1366: 行 1 の...

Mysql 中国語ソートルールの説明

MySQL を使用する際、フィールドをソートしたりクエリしたりすることがよくあります。通常は、中国語...

Centos6.5 glibc アップグレードプロセスの紹介

目次シナリオ要件glibc バージョンglibcのインストールglibc ソフトリンクシナリオ要件C...

Linux で jar パッケージを起動してバックグラウンドで実行する方法

jar パッケージを実行する Linux コマンドは次のとおりです。方法1: java -jar s...

ウェブサイトのコンテンツが検索エンジンに含まれないようにする方法

通常、Web サイトを構築する目的は、検索エンジンにインデックス登録してもらい、プロモーションを拡大...

Web面接でよくある質問:リフローとリペイントの原理と違い

目次ブラウザのレンダリングメカニズムリフローと再塗装リフロー逆流を引き起こす行為:再描画再描画を引き...

MySQL データ型における DECIMAL の使用法の詳細な説明

MySQL データ型における DECIMAL の使用法の詳細な説明MySQL のデータ型には、INT...

MySQL で 2 つのテーブルをクエリする場合の from と join の違いの概要

序文MySQL では、複数テーブル結合クエリは非常に一般的な要件です。複数テーブルクエリを使用する場...

Linux で nohup ログ出力が大きすぎる問題の解決方法の詳細な説明

最近、hadoop テスト クラスターで spark ストリーミング プログラムを実行し、その後、n...

CSSアニメーションを使用して背景のシームレスな無限ループを実装する例

1. 需要絵が左から右へ無限ループで動く2. コードモバイルデバイスに適用されているため、rem 単...

Nginx は rtmp ライブ サーバーの実装コードを構築します

1. nginxソースディレクトリに新しいrtmpディレクトリを作成し、git clone http...

Vueライフサイクルカメラの8つのフック関数

目次1. beforeCreateとcreated関数2. beforeMountとmount関数3...

nginxコンテナ設定ファイルの独立した実装

コンテナを作成する [root@server1 ~]# docker run -it --name ...