mysql分組排序加序號(不用存儲過程,就簡簡單單sql語句哦)

作前端好長時間了,很久沒動sql了。在追一個喜歡的女孩,作測試的,有這麼個需求求助與本屌絲,機會可貴,開始折騰起來,配置mysql,建庫,建表....前端

一 建表mysql

CREATE TABLE `my_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `parent_code` varchar(255) DEFAULT NULL,
  `code` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

二 模擬數據sql

INSERT INTO `my_test` (  `parent_code`, `code`) VALUES ('01', '001');
INSERT INTO `my_test` (  `parent_code`, `code`) VALUES ('01', '002');
INSERT INTO `my_test` (  `parent_code`, `code`) VALUES ('02', '001');
INSERT INTO `my_test` (  `parent_code`, `code`) VALUES ('01', '003');
INSERT INTO `my_test` (  `parent_code`, `code`) VALUES ('02', '002');
INSERT INTO `my_test` (  `parent_code`, `code`) VALUES ('03', '001');
INSERT INTO `my_test` (  `parent_code`, `code`) VALUES ('04', '001');

查詢 結果以下:測試

三 不分組加序號spa

select  (@i := @i + 1) rownum,my_test.*  from    my_test , (SELECT  @i := 0) AS a  group  by   parent_code ,code ,id  order  by   parent_code 

結果以下:3d

解釋一下 這個地方用了@i變量  剛開始的 讓 @i=0   而後 每查詢一條 讓  @i+=1code

四  分組 排序 加 序號了blog

剛開始的沒 思路,就度娘了 ,有用 存儲過程  建立臨時表  插入臨時表實現的,還有用存儲過程遊標實現,對於很久沒動sql,並且以前也沒寫過mysql 查詢的 淫來講 好複雜,排序

好囧 ,趕腳要再我女神面前丟人了,but 多謝上天眷顧,查看我女神聊天記錄的時候,靈感來了,爲何不繼續發掘下變量的做用呢 。class

因而 再定義一個變量@pre_parent_code:='' 再存上一個 parent_code  ,只要  pre_parent_code不等於當前的parent_code  讓 @i:=0 else  @i+=1 就ok了

select 
                        -- rownum 判斷 @pre_parent_code是否和當前的parent_code同樣 ,true:讓 @i+=1 false:重置@i
 (@i := case  when  @pre_parent_code=parent_code then @i + 1 else 1 end ) rownum, my_test.*, -- 設置 @pre_parent_code等於上一個 parent_code 
                         (@pre_parent_code:=parent_code) from my_test , (SELECT  @i := 0, @pre_parent_code:='') AS a group  by parent_code ,code ,id order  by   parent_code 

結果以下圖

遇到難題千萬別放棄,萬一實現了呢,更況且這是 愛情的力量呢  ,哇O(∩_∩)O哈哈哈~

相關文章
相關標籤/搜索