按特定顺序对用户进行排序

Sort users by a specific order

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

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

然后我得到:(user_id,用户名,unit_followers)

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

但是现在,我添加了一个新的 table、promote 和 2 列,user_idsort_order。在这个table一个想设置特定用户的排序顺序。 此 table 仅包含一个用户,user_id = 5 和 sort_order = 2。(可以包含多个用户)

我怎样才能得到这个:(user_id,用户名,unit_followers)

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

使用这个自定义排序

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