我有两张桌子,一张'gift_limit_count'和一张'得分'如下:
'gift_limit_count'包含:
gift_id
gift_limit
gift_amount
'得分'包含:
USER_ID
USER_NAME
user_score
当用户的'user_score'计数达到下一个最高'gift_limit'时,他们将获得'gift_amount'。我想做的是显示最接近下一个奖项的十大用户名单。
例如:
David(user_name)在被授予40英镑(gift_amount)之前有1分
Suzi在被授予20英镑之前有2分
伊恩在被授予40英镑之前有2分
Zack在被授予30英镑之前有3分
...
...
答案 0 :(得分:2)
Select S.user_id, S.user_name, S.user_score
, GLC.gift_limit, GLC.gift_amount
From (
Select S1.user_id
, Min( GLC1.gift_limit ) As NextLimit
From score As S1
Join gift_limit_count As GLC1
On GLC1.gift_limit > S1.user_score
Group By S1.user_id
) As Z
Join score As S
On S.user_id = Z.user_id
Join gift_limit_count As GLC
On GLC.gift_limit = Z.NextLimit
Order By ( gift_limit - user_score )
Limit 10
答案 1 :(得分:1)
您可以使用基于min(score - gift_limit)的连接(分数< gift_limit)进行查询,然后按每个人的最低值排序。将它分组以获得每人一个答案。