在SQL Server 2000中按字段顺序按字段顺序排序

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)