最好的辦法是在您的數據庫中保留一個預先計算的總數,或者在user
模型本身或與user
具有1:1關係的單獨模型中。如果您不這樣做,則您必須始終爲所有用戶計算總和以獲得他們的評分,這意味着在bets
表格上進行全表操作。這就是說,這個查詢會給你想要的結果,如果超過1人具有相同的總,它會計算雙方的等級X:
select id, (select count(h.id) from users u inner join
(select user_id, sum(profitloss) as `total` from bets group by user_id) b2
on b2.user_id = u.id, (select id from users) h inner join
(select user_id, sum(profitloss) as `total` from bets group by user_id) b
on b.user_id = h.id where u.id = 1 and (b.total > b2.total))
as `rating` from users where id = 1;
你需要插入user.id
進入查詢在where id = X
如果添加了一個列user
表來跟蹤其總的,查詢是一個稍微簡單一些,在這個例子中列名是total_profit_loss
:
select id, total_profit_loss, (select count(h.username)+1 from users u,
(select username, score from users) h
where id = 1 and (h.total_profit_loss > u.total_profit_loss))
as `rating` from users where id = 1;
我想我與誰具有最高後排序的用戶數組利潤損失。我如何在這個數組中找到一個特定的用戶並查看他擁有哪個位置。像第37位一樣。 – Twiddr
對後期輸入反應到你的答案對不起 - 我的妻子剛生下的一天,所以我一直在忙:) – Twiddr
我用這種方法用耙子任務結合.. – Twiddr