MySQL中實現Rank排名高階函式

2021-09-28 22:31:54 字數 1557 閱讀 7067

先舉例乙個

select  name, time, @currank := @currank + 1 as rank

from 表名, (

select @currank := 0

) qorder by time

1.要在mysql中宣告乙個變數,你必須在變數名之前使用@符號。from子句中的(@currank := 0)部分允許我們進行變數初始化,而不需要單獨的set命令。當然,也可以使用set,但它會處理兩個查詢

2.當使用rank()函式時,如果兩個或以上的行排名並列,則相同的行都會有相同的排名,但是實際排名中存在有關係的差距。

select

@rownum := @rownum + 1 as rank,

a.*from

( select

p.project_id projectid,

ifnull(p.project_name,

'') projectname,

ifnull(a1.url, '') projectpicurl,

ifnull(p.donation_area, '') donationarea,

count(s.user_id) lovevalue,

p.publish_time publishtime,

p.pro_commit_date procommitdate

from

gongyi_project_support s

left join projects p on s.project_id =

p.project_id

left join

project_details d on s.project_id = d.project_id

left join attachments

a1 on substring_index(d.project_pic, ',', 1) =

a1.attach_id

where

1 = 1

and yearweek(date_format(s.create_date,'%y-%m-%d')) =

yearweek(now())

and date_format(s.create_date, '%y%m') =

date_format(curdate( ), '%y%m')

and year(s.create_date)=year(now())

and p.project_on_off = 5

andp.project_status in (11, 12, 13)

group by

s.project_id

order by

lovevalue

desc

) a,

(select @rownum := 0) b

MySQL中實現rank排名查詢

在mysql中,不存在類似於sql server或orcal等中的rank 函式來得到排名 所以我們需要手動地寫這個rank功能。sql語句中,使用 來定義乙個變數。如 abcsql語句中,使用 來給變數賦值,abc 123,則變數abc的值為123sql語句中,if a,b,c 表示,如果a條件成...

MySQL實現Rank高階排名函式

mysql中沒有rank排名函式,當我們需要查詢排名時,只能使用mysql資料庫中的基本查詢語句來查詢普通排名。儘管如此,可不要小瞧基礎而簡單的查詢語句,我們可以利用其來達到rank函式一樣的高階排名效果。在這裡我用乙個簡單例子來實現排名的查詢 首先我們先建立乙個我們需要進行高階排名查詢的playe...

在MySQL中實現Rank高階排名函式

mysql中沒有rank排名函式,當我們需要查詢排名時,只能使用mysql資料庫中的基本查詢語句來查詢普通排名。儘管如此,可不要小瞧基礎而簡單的查詢語句,我們可以利用其來達到rank函式一樣的高階排名效果。在這裡我用乙個簡單例子來實現排名的查詢 首先我們先建立乙個我們需要進行高階排名查詢的playe...