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:簡單記錄訊號處理MySql
- ORACLE&MYSQL同樣的記錄值進行編號處理OracleMySql
- mysql 5.7 執行緒阻塞處理MySql執行緒
- 【問題處理】使用trim和 replace處理字串中的換行符號字串符號
- MYSQL特殊字元(單引號,行尾斜槓)的處理MySql字元
- 引號的處理方式
- 訊號處理基本引數
- linux 訊號與處理Linux
- 【scipy 基礎】--訊號處理
- 批處理中的符號符號
- MySQL事務處理MySql
- MySQL 併發處理MySql
- MySQL異常處理MySql
- MYSQL中對訊號的處理(SIGTERM,SIGQUIT,SIGHUP等)MySqlUI
- MySQL行號問題MySql
- 使用 scipy.fft 進行Fourier Transform:Python 訊號處理FFTORMPython
- Linux訊號機制與訊號處理Linux
- MySQL 查詢處理 SQL查詢執行順序MySql
- 【js】版本號對比處理方案JS
- 處理python中的訊號Python
- Room & Kotlin 符號的處理OOMKotlin符號
- Linux SIGCHLD訊號處理LinuxGC
- MyBatis Like查詢處理%_符號MyBatis符號
- Linux訊號處理機制Linux
- php 處理訊號簡單演示PHP
- MySQL show processlist故障處理MySql
- Mysql如何處理死鎖MySql
- MySQL的表碎片處理MySql
- MySQL使用Batch批量處理MySqlBAT
- MySQL加鎖處理分析MySql
- MYSQL--事務處理MySql
- Mysql故障處理2則MySql
- MySQL 加鎖處理分析MySql
- mysql事務處理(轉)MySql
- Sun推出64執行緒通用處理器 號稱世界最快(圖)執行緒
- Mysql中獲取行號MySql
- 科學音訊處理(二):如何使用 Octave 對音訊檔案進行基本數學訊號處理音訊