我想对用户进行排序,所以我有这个:
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
答案 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