Ret*_*der 3 sql-server sql-server-2000
我正在尝试按不按字母顺序排列的名称列表来排序项目.完成列表后,我试图按字母顺序继续其余的,而不是我最初选择的那些.
见例子:
INPUT:
print 'Results:'
select * from Geniuses
order by ('Charles Babbage',
'Albert Einstein',
'Adrien-Marie Legendre',
'Niels Henrik Abel')
Run Code Online (Sandbox Code Playgroud)
然后最后按字母顺序对其余部分进行排序......
OUTPUT:
Results:
Charles Babbage ... details
Albert Einstein ...
Adrien-Marie Legendre ...
Niels Henrik Abel ...
Arthur Cayley ...
...
Run Code Online (Sandbox Code Playgroud)
Mic*_*son 10
select * from Geniuses
order by
-- First, order by your set order...
case FullName
when 'Charles Babbage' then 1
when 'Albert Einstein' then 2
when 'Adrien-Marie Legendre' then 3
when 'Niels Henrik Abel' then 4
else 5
end,
-- Then do a secondary sort on FullName for everyone else.
FullName
Run Code Online (Sandbox Code Playgroud)
编辑:
我看到你的评论是每个用户都可以配置的.在这种情况下,您必须有一个FavoriteGeniuses表来跟踪哪个用户更喜欢哪个Geniuses,然后在该表中指定排序顺序:
select *
from
Geniuses g left join
FavoriteGeniuses fg
ON fg.GeniusID = g.GeniusID
AND fg.UserID = @UserID
order by
-- The higher the number, the first up on the list.
-- This will put the NULLs (unspecified) below the favorites.
fg.SortPriority DESC,
f.FullName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2874 次 |
| 最近记录: |