订购最接近下一个奖项的会员名单

时间:2012-04-26 17:10:47

标签: mysql

我有两张桌子,一张'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分 ...
...

2 个答案:

答案 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)进行查询,然后按每个人的最低值排序。将它分组以获得每人一个答案。