先舉例乙個
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...