大鳥的學(xué)習(xí)樂園
          路漫漫其修遠(yuǎn)兮,吾將上下而求索
          posts - 26,comments - 27,trackbacks - 0
          Mysql 的rank 函數(shù)如何實(shí)現(xiàn)

          表特征:
          mysql> select * from test;
          +------+------+
          | a    | b    |
          +------+------+
          |    1 |   20 |
          |    1 |   21 |
          |    1 |   24 |
          |    2 |   20 |
          |    2 |   32 |
          |    2 |   14 |
          +------+------+
          6 rows in set (0.00 sec)

          現(xiàn)在,我們以a分組,查詢b列最大的2個(gè)值。 這條sql要怎么寫了?



          1.創(chuàng)建表
          Create Table: CREATE TABLE `sam` (
            `a` int(11) DEFAULT NULL,
            `b` int(11) DEFAULT NULL
          ) ENGINE=MyISAM DEFAULT CHARSET=utf8

          2.插入模擬數(shù)據(jù)
          INSERT INTO `sam` VALUES (1,10),(1,15),(1,20),(1,25),(2,20),(2,22),(2,33),(2,45);
          +------+------+
          | a    | b    |
          +------+------+
          |    1 |   10 |
          |    1 |   15 |
          |    1 |   20 |
          |    1 |   25 |
          |    2 |   20 |
          |    2 |   22 |
          |    2 |   33 |
          |    2 |   45 |
          +------+------+

          3.SQL實(shí)現(xiàn)
          select a,b,rownum,rank from
              (select ff.a,ff.b,@rownum:=@rownum+1 rownum,if(@pa=ff.a,@rank:=@rank+1,@rank:=1) as rank,@pa:=ff.a
              FROM
                 (select a,b from sam group by a,b order by a asc,b desc) ff,(select @rank:=0,@rownum:=0,@pa=null) tt) result
              having rank <=2;

          4.結(jié)果:
          +------+------+--------+------+
          | a    | b    | rownum | rank |
          +------+------+--------+------+
          |    1 |   25 |      1 |    1 |
          |    1 |   20 |      2 |    2 |
          |    2 |   45 |      5 |    1 |
          |    2 |   33 |      6 |    2 |
          +------+------+--------+------+
          4 rows in set (0.00 sec)
          posted on 2011-01-28 13:28 大鳥 閱讀(4052) 評(píng)論(2)  編輯  收藏

          FeedBack:
          # re: Mysql 的rank 函數(shù)如何實(shí)現(xiàn)
          2011-12-16 11:29 | adfgsf
          他媽的也不知你們誰抄誰的?  回復(fù)  更多評(píng)論
            
          # re: Mysql 的rank 函數(shù)如何實(shí)現(xiàn)
          2012-01-13 17:20 | rank
          幫助了我  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 贵溪市| 弥勒县| 安福县| 惠安县| 墨玉县| 饶河县| 即墨市| 元谋县| 玉门市| 洞头县| 宝鸡市| 通江县| 靖边县| 普兰县| 邛崃市| 乃东县| 四川省| 仙游县| 山西省| 秦皇岛市| 尖扎县| 荆州市| 太仆寺旗| 雅安市| 嵊州市| 贵州省| 常熟市| 惠州市| 永嘉县| 岳阳县| 武川县| 巩义市| 额敏县| 东台市| 崇义县| 禹州市| 清丰县| 蒙阴县| 千阳县| 内江市| 新邵县|