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;
查询结果:
参考博客: