MySQL 處理行號
首先建立一個測試表row_number:
再插入一些測試資料:
如何在select時給出對應的行號呢?
在oracle中有ROWNUM
那麼在mysql中如何處理此類問題呢?
首先對a列進行分組,並統計數量及小於該分割槽資料的數量。
程式碼實現:
然後和數字輔助表連線,通過輔助表來對上述產生的結果集進行復制,每行復制的記錄數由count欄位決定。
記錄X需要複製3次,記錄Y需要複製2次,記錄Z需要複製1次。
(數字輔助表在之前的博文中有提到)
程式碼實現:
(其中a1為數字輔助表nums返回的列名,原輔助表中列名為a,但此處有重合,故nums的a列被mysql自動命名為a1)
我們發現,smaller和a1之和便是我們要的行號
只需要做一次加和便可:
程式碼實現:
- create table row_number(a char(1));
再插入一些測試資料:
-
insert into row_number select 'X';
-
insert into row_number select 'X';
-
insert into row_number select 'X';
-
insert into row_number select 'Y';
-
insert into row_number select 'Y';
- insert into row_number select 'Z';
如何在select時給出對應的行號呢?
在oracle中有ROWNUM
那麼在mysql中如何處理此類問題呢?
首先對a列進行分組,並統計數量及小於該分割槽資料的數量。
程式碼實現:
-
select a,count(*) as count,(select count(*)
-
from row_number as b
-
where b.a < a.a) as smaller
-
from row_number as a
- group by a;
然後和數字輔助表連線,通過輔助表來對上述產生的結果集進行復制,每行復制的記錄數由count欄位決定。
記錄X需要複製3次,記錄Y需要複製2次,記錄Z需要複製1次。
(數字輔助表在之前的博文中有提到)
程式碼實現:
-
select *
-
from(select a,count(*) as count,(select count(*)
-
from row_number as b
-
where b.a < a.a) as smaller
-
from row_number as a
-
group by a) as c,nums
- where nums.a<=count;
(其中a1為數字輔助表nums返回的列名,原輔助表中列名為a,但此處有重合,故nums的a列被mysql自動命名為a1)
我們發現,smaller和a1之和便是我們要的行號
只需要做一次加和便可:
程式碼實現:
-
select nums.a+smaller as rownum,c.a
-
from(select a,count(*) as count,(select count(*)
-
from row_number as b
-
where b.a < a.a) as smaller
-
from row_number as a
-
group by a) as c,nums
- where nums.a<=count;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-1252921/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL:簡單記錄訊號處理MySql
- mysql 5.7 執行緒阻塞處理MySql執行緒
- mysql 1129處理MySql
- linux 訊號與處理Linux
- MySQL事務處理MySql
- MySQL 併發處理MySql
- 使用 scipy.fft 進行Fourier Transform:Python 訊號處理FFTORMPython
- 【scipy 基礎】--訊號處理
- 訊號處理基本引數
- Room & Kotlin 符號的處理OOMKotlin符號
- 處理python中的訊號Python
- MySQL的表碎片處理MySql
- MySQL show processlist故障處理MySql
- Mysql如何處理死鎖MySql
- MATLAB及其訊號處理基礎Matlab
- 【js】版本號對比處理方案JS
- 換行符處理
- MySQL 處理重複資料MySql
- 高分三號ScanSAR &TopSAR資料處理
- Python 音訊訊號處理庫 librosaPython音訊ROS
- linux中的訊號處理與SROPLinux
- 【問題處理】MySQL忘記root密碼的處理辦法MySql密碼
- Debezium zookeeper kafka mysql資料處理KafkaMySql
- Mysql自動處理同步報錯MySql
- 聊聊MySQL是如何處理排序的MySql排序
- MySQL 動態字串處理詳解MySql字串
- MySQL:亂碼問題處理流程MySql
- windows 處理bat連線本地mysqlWindowsBATMySql
- 違規行為處理
- 並行處理 Parallel Processing並行Parallel
- 影像行畫素處理
- 訊號處理第二篇——接著談正弦訊號
- MATLAB數字訊號處理(2)LFM脈衝雷達回波處理模擬Matlab
- 多行文字加省略號的處理方法
- 開心檔之C++ 訊號處理C++
- 關於特殊符號&與& 的處理符號
- java正規表示式替換手機號,身份證號處理 星號Java
- MySQL 數值型別溢位處理MySql型別
- Laravel 處理 MySQL geometry 空間型別LaravelMySql型別