MySQL 對某個欄位先統計後獲取排序名次

2022-06-14 17:00:12 字數 1500 閱讀 5923

一,普通獲取排序名次

比如獲取乙個班級成績排名,分兩步

(1)查出所有使用者和他們的成績排名

select id,maxscore,(@rownum:=@rownum+1) as rowno

from t_user,

(select (@rownum :=0) ) b

order by t_user.maxscore desc

(2)查出某個使用者在所有使用者成績中的排名

select u.rowno from (

select id,(@rownum:=@rownum+1) as rowno

from t_user,

(select (@rownum :=0) ) b

order by t_user.maxscore desc ) u where u.id="2015091810371700001";

二,那假如是統計某個字段總數再排名呢,如場景:

直播間裡,觀眾給主播打賞的時候,主播可以收益貨幣,每次打賞都會記錄在a表。

a表:fuid(發起者) uid(收益者) ctime(建立時間戳) coin(貨幣)

現在使用sql語句獲取收益者b的本週收益的排名名次。(不使用迴圈)

也是分兩步,第一步,將貨幣欄位先排序好,再獲取某個單獨使用者的排序名次

(1)獲取統計字段整體排序

select uid,sum(coin) as total,(@rownum:=@rownum+1) as rowno

from money,

(select (@rownum :=0) ) b

where ctime between '1609498844' and '1610103956'

group by money.uid

order by total desc

(2)獲取排序好的名次字段

select m.rowno from (select uid,sum(coin) as total,(@rownum:=@rownum+1) as rowno

from money,

(select (@rownum :=0) ) b

where ctime between '1609498844' and '1610103956'

group by money.uid

order by total desc) m where m.uid =102;

直接上圖:

表資料:

第一次查詢結果:

第二次直接獲取裡面的字段就好了

mysql 替換某個欄位中的某個字元

遇到這麼個情況 比如 msql裡面的某個表的某個字段裡面儲存的是乙個人的位址,有一天這個位址的裡面的某個地 名變了,那麼他的位址也就要變 比如 原來是 csharp view plain copy number addr 01 四川省成都市 街道05號 02 四川省成都市 街道07號 03 四川省成...

mysql替換某個欄位中的某個字元

比如 msql裡面的某個表的某個字段裡面儲存的是乙個人的位址,有一天這個位址的裡面的某個地 名變了,那麼他的位址也就要變 比如 原來是 number addr 01 中國浙江 02 中國浙江 03 中國浙江 現在位址改了 浙江 搬到了 上海 所以,addr欄位裡面的所有的值,都要把 浙江 改為 上海...

mysql查詢json的某個字段

select json extract 欄位名,json結構 from 表名 如果json裡有雙引號,那這樣取出來的資料也帶雙引號,要去掉就使用replace函式 例如 ps push data表裡的push data欄位存的資料為 code 1 msg 成功 使用sql select replac...