[英]MySQL ranking query is not giving expected value
我有以下情況:有一個與錢包和部門有關的表。 我必須對同一部門的用戶進行排名。 我正在使用的SQL代碼正在運行,但是當我嘗試放入行號時會產生奇怪的結果。 我確實嘗試了許多不同的策略,但對我沒有任何幫助。
select * , @curRow := @curRow + 1 AS row_number
from division_user,
wallet JOIN (SELECT @curRow := 0) r
where division_user.division_id in (select division_user.division_id
from division_user
where division_user.wallet_id in
(select wallet.id from wallet where wallet.user_id = 1 )) AND
division_user.wallet_id = wallet.id
group by wallet.id
order by wallet.weekly_profit_value DESC
查詢的輸出是:
1,3
2,5
3,1
所需結果
1,1
2,2
3,3
變量和group by
並不總是協同工作。 另外, 切勿在from
子句中使用逗號。 始終使用正確的顯式join
語法。
select duw.*, (@curRow := @curRow + 1) AS row_number
from (select du.*, w.*
from division_user du join
wallet w
on du.wallet_id = w.id
where du.division_id in (select du2.division_id
from division_user du2
where du2.wallet_id in (select w2.id
from wallet w2
where w2.user_id = 1
)
)
group by w.id
) duw cross join
(SELECT @curRow := 0) params
order by w.weekly_profit_value DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.