按特定订单对用户排序

时间:2015-01-27 10:38:54

标签: sql azure-sql-database

我想对用户进行排序,所以我有这个:

 SELECT TOP(@UnitUsers) * FROM users ORDER BY unit_followers DESC

我得到:(user_id,username,unit_followers)

1 Test  123
2 Admin 89
3 Ola   79
4 Pat   67
5 Twe   54
6 Dry   42

但是现在,我添加了一个新表, promote 包含2列, user_id sort_order 。在此表中,您想要设置特定用户的排序顺序。 该表只包含一个用户,user_id = 5和sort_order = 2.(可以包含多个用户)

我怎样才能得到这个:(user_id,username,unit_followers)

1 Test  123
5 Twe   54
2 Admin 89
3 Ola   79
4 Pat   67    
6 Dry   42

1 个答案:

答案 0 :(得分:1)

使用此自定义排序

SELECT user_id,
       username,
       unit_followers
FROM   (SELECT Row_number()OVER (ORDER BY unit_followers DESC ) rn,
               a.*,
               b.sort_order
        FROM   users a
               LEFT JOIN promote b
                      ON a.user_id = b.user_id) a
ORDER  BY Isnull(sort_order - 1, rn),rn