按特定顺序对用户进行排序
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_id 和 sort_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
我想对用户进行排序,所以我有这个:
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_id 和 sort_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