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 テーブル結合クエリでグループ化と重複排除を実装する例

目次ビジネスロジックデータテーブル構造クエリロジックSQL スクリプトスクリプトの説明ビジネスロジッ...

Linux での MySQL 5.1 および 5.7 のインストール チュートリアル

以下のコンテンツのオペレーティング システムは次のとおりです: Centos 6.7 yum で M...

Vue.js を学ぶ際に遭遇する落とし穴

目次クラス void のポイントES6 矢印関数ヴュートファイvue-cli非同期と同期実行と展開ヒ...

Hyper-v仮想マシンを使用してCentos7をインストールする

目次導入準備するシステムイメージをダウンロードHyper-Vを有効にする新しい仮想ネットワークスイッ...

CSS3 の Flex レイアウトの詳細な分析

Flexbox レイアウト モジュールは、コンテナー内のスペースをより効率的に配分する方法を提供する...

Ubuntu 18.04 に phpMyAdmin をインストールするための詳細なチュートリアル

Ubuntu 18.04 上の Apache で動作するように phpMyAdmin をインストール...

JavaScript 関数のコンテキストのルールは何ですか?

目次1. ルール 1: Object.Method() 1.1 ケース1 1.2 ケース2 1.3 ...

MySQL でデータを削除してもテーブル ファイルのサイズが変更されないのはなぜですか?

長期間稼働しているデータベースの場合、テーブルがストレージ領域を占有しすぎるという問題がよく発生しま...

mysqladmin を使用して MySQL インスタンスの現在の TPS と QPS を取得する方法

mysqladmin は管理と操作を行う公式の mysql クライアント プログラムです。MySQL...

VirtualBox を使用して Mac 上にローカル仮想マシン環境を構築する方法

1. ビッグデータとHadoopビッグデータについて研究し学ぶには、当然 Hadoop から始める必...

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

このチュートリアルでは、MySQL5.6.22のインストールと設定方法の具体的なコードを参考までに共...

MYSQLテーブルの包括的な概要

目次1. テーブルを作成する1.1. テーブルを作成するための基本構文1.1.1. シンプルなテーブ...

Svelte の Defer Transition を Vue で実装する方法

最近、Rich Harris の <Rethinking Reactivity> ビデオ...

Nginx リバース プロキシと負荷分散の実践

リバースプロキシリバースプロキシとは、プロキシサーバーを介してユーザーのアクセス要求を受信し、ユーザ...

Node.js の fs モジュールと Path モジュールのメソッドの詳細な説明

概要:ファイルシステム モジュールは、標準の POSIX ファイル I/O 操作セットをラップしたシ...