在mysql中,不存在類似於sql server或orcal等中的rank()函式來得到排名;所以我們需要手動地寫這個rank功能。
sql語句中,使用@來定義乙個變數。如:@abcsql語句中,使用:=來給變數賦值,:@abc:=123,則變數abc的值為123sql語句中,if(a,b,c)表示,如果a條件成立,那麼執行b,否則執行c,如:
@abc := if(2>1,100,200)的結果是,abc的值為100。
◎case...when...then語句
case...when...then語句有兩種情況:
case情況一(case 後面不帶表示式):
case when expression then 操作1注:自上而下,凡是走了其中乙個when或者是走了else了,其他的都不再走了。when expression then 操作2
else 操作n
end
case情況二(case 後面帶表示式,此時when 後面的則是該表示式可能的值):
case expression注:自上而下,凡是走了其中乙個when或者是走了else了,其他的都不再走了。when expression的值1 then 操作1
when expression的值2 then 操作2
else 操作n
end
先建立乙個tablle,並放入一些資料,如:
age公升序排列(age相同時,排名繼續增加),示例:
注:這裡的(select @currank := 0) q 的作用是:在同乙個select語句中給變數currank賦初始值。效果等
同於,兩個sql語句,第乙個先賦值,第二個再select:
age降序排列(age相同時,排名繼續增加),示例:
age公升序排列(age相同時,排名相同;但是到下乙個age不同時,排名不跳級,繼續+1),示例一(case...when...then):
age公升序排列(age相同時,排名相同;但是到下乙個age不同時,排名不跳級,繼續+1),示例二if(a,b,c):
age公升序排列(age相同時,排名相同;但是到下乙個age不同時,排名跳級+n),示例:
注:如果嫌查出來的列太多了,可以再對此結果進行select,如:
MySQL中實現Rank排名高階函式
先舉例乙個 select name,time,currank currank 1 as rank from 表名,select currank 0 qorder by time1.要在mysql中宣告乙個變數,你必須在變數名之前使用 符號。from子句中的 currank 0 部分允許我們進行變數初...
MySQL實現Rank高階排名函式
mysql中沒有rank排名函式,當我們需要查詢排名時,只能使用mysql資料庫中的基本查詢語句來查詢普通排名。儘管如此,可不要小瞧基礎而簡單的查詢語句,我們可以利用其來達到rank函式一樣的高階排名效果。在這裡我用乙個簡單例子來實現排名的查詢 首先我們先建立乙個我們需要進行高階排名查詢的playe...
在MySQL中實現Rank高階排名函式
mysql中沒有rank排名函式,當我們需要查詢排名時,只能使用mysql資料庫中的基本查詢語句來查詢普通排名。儘管如此,可不要小瞧基礎而簡單的查詢語句,我們可以利用其來達到rank函式一樣的高階排名效果。在這裡我用乙個簡單例子來實現排名的查詢 首先我們先建立乙個我們需要進行高階排名查詢的playe...