01 基础知识
- sql语句中,使用@来定义一个变量。如:@abc
- sql语句中,使用:=来给变量赋值,:@abc:=123,则变量abc的值为123
- sql语句中,if(A,B,C)表示,如果A条件成立,那么执行B,否则执行C,如:@abc := if(2>1,100,200)的结果是,abc的值为100。
- sql语句中,还有case…when…then
02 排名例子
SELECT city_popularity.*, CASE WHEN @popularity = popularity THEN @rank WHEN @popularity := popularity THEN @rank := @rank + 1 WHEN @popularity = 0 THEN @rank := @rank + 1 END AS rank FROM city_popularity, (SELECT @rank := 0, @popularity := NULL) init ORDER BY popularity DESC;
查询结果:
参考博客: