Heim > Datenbank > MySQL-Tutorial > MySQL的rank函数实现_MySQL

MySQL的rank函数实现_MySQL

WBOY
Freigeben: 2016-06-01 13:09:53
Original
1937 Leute haben es durchsucht

Mysql 的rank 函数如何实现 - 大鸟的学习乐园 - BlogJava 

http://www.blogjava.net/dunkbird/archive/2011/01/28/343718.html

表特征:

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)

现在,我们以a分组,查询b列最大的2个值。 这条sql要怎么写了?


1.创建表

Create Table: CREATE TABLE `sam` (  `a` int(11) DEFAULT NULL,  `b` int(11) DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8
Nach dem Login kopieren

2.插入模拟数据

INSERT INTO `sam` VALUES (1,10),(1,15),(1,20),(1,25),(2,20),(2,22),(2,33),(2,45);
Nach dem Login kopieren
+------+------+
| a    | b    |
+------+------+
|    1 |   10 | 
|    1 |   15 | 
|    1 |   20 | 
|    1 |   25 | 
|    2 |   20 | 
|    2 |   22 | 
|    2 |   33 | 
|    2 |   45 | 
+------+------+

3.SQL实现

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 <br>4.结果:<br>+------+------+--------+------+<br>| a    | b    | rownum | rank |<br>+------+------+--------+------+<br>|    1 |   25 |      1 |    1 | <br>|    1 |   20 |      2 |    2 | <br>|    2 |   45 |      5 |    1 | <br>|    2 |   33 |      6 |    2 | <br>+------+------+--------+------+<br>4 rows in set (0.00 sec)<p>注:</p><p>@x 为一变量,<br>X:=Y 将Y值赋给X<br></p>
    
Nach dem Login kopieren
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage