博主新人一枚,大家可以提出自己的寶貴意見。
下來我們進入正題。
大家首先要了解介面的場景,再就是排行榜的規則,我們這裡說的中國式排行榜。
排行榜總結了一下分為3種:
中國式排行: 非中國式排行1: 非中國式排行2:
1; 1; 1;
2; 2; 2;
2; 2; 3;
3; 4; 4;
3; 5; 5;
4; 5; 6;
5; 7; 7;
select
user_id,
@position :=
if (
@previous = good_bad_num,
@position,
@position + 1
) as position ,@previous := good_bad_num
from
select
user_id,
good_bad_num
from
v_praise_user
where office_id = everyoffice
order by
good_bad_num desc
) d,
select
@previous := - 1,
@position := 0
) as s
其實sql原理很簡單,做過jsp頁面的合併**的都清楚,定義兩個變數,乙個控制狀態,另乙個進行業務。
select
user_id,
good_bad_num
from
v_praise_user
where office_id = everyoffice
order by
good_bad_num desc
這段主要是對v_praise_user表的good_bad_num 倒序排列,獲取結果集。
select
@previous := - 1,
@position := 0
必要需要的初始化,如果不經心初始化,初次查詢會出現錯誤。
if (
@previous = good_bad_num,
@position,
@position + 1
這段sql是這個排序的核心,乙個if判斷語句,結合變數使用,實現排行業務。
@定義使用者變數,只能在mysql資料庫端執行,所以需要在資料庫端用function或者儲存過程來進行呼叫。
第一次寫博文,望輕噴。
mysql查詢排行榜 mysql 查詢排名
sql語句查詢排名 思路 有點類似迴圈裡面的自增一樣,設定乙個變數並賦予初始值,迴圈一次自增加1,從而實現排序 mysql裡則是需要先將資料查詢出來並先行按照需要排序的字段做好降序desc,或則公升序asc,設定好排序的變數 初始值為0 a 將已經排序好的資料從第一條依次取出來,取一條就自增加一,實...
mysql 實現排行榜 mysql之排名實現
前言 mysql沒有實現類似排名 rank 功能的函式。但是我們可以通過基數的查詢加上其他函式可是實現類似的功能。題目 編寫乙個 sql 查詢來實現分數排名。一 首先我們建立一張並插入一些資料如下,用於方便後面排名的演示。create table players pid int 2 not null...
奧運排行榜
每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個程式,對每個前來諮詢的國家按照對...