mysql 中關於獲取行號@rownum:=@rownum+1


mysql中沒有獲取行號的函數,因此需要通過一些自定義語句來進行獲取。通常做法是,通過定義用戶變量@rownum來保存表中的數據。通過賦值語句@rownum:=@rownum+1來累加達到遞增行號。

例如:select a.* ,@rownum:=@rownum+1 from a,(select @rownum:=0) r; 后半部分語句的select @rownum:=0 相當於創建了r的新表,其表的列為@rownum,數值為0.

通過利用變量將@rownum的行進行重新賦值,並顯示。可以應用於獲取行號或名次排列。

另外,在名次排列時,由於會有重復的數據,排列時僅僅按照,@rownum:=@rownum+1。排序是不對的,需要在數據相同時,名次應該相同。因此需要另一變量保存上次的數據,並進行與本行數據對比,相同 序號不變,不同序號應該等於行號。此時需要應用到case when進行判斷,例如:

Select a.*,

Case

When @rownum0=a.c_id  then  @rownum:=@rownum+1

When @rownum0:=a.c_id  then  @rownum:=1

Else  @rownum

End rank1,

Case

When @rownum1=a.s_score then @rownum2

When @rownum1:=a.s_score then @rownum2:=@rownum

Else @rownum2

End rank2

 from (select * from score  order by c_id ,s_score desc

) as a,(select @rownum:=0, @rownum0:=0,@rownum1:=0,@rownum2:=0) r;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM