2011-12-12 56 views
0

我有一个sql语句,我想ORDER BY一个特定的序列。SQL ORDER BY(序列)

SELECT * FROM UserDB ORDER BY [Role]

我怎样才能使这样的数据带给我的GridView表由管理员上市前,由用户和客人跟进?

回答

8

所以你想订购Admin/User/Guest

试着这么做:

SELECT * 
FROM UserDB 
ORDER BY 
    CASE Role WHEN 'Admin' THEN 0 
      WHEN 'User' THEN 1 
      WHEN 'Guest' THEN 2 
    END 

这是否对你的工作?

另一种选择是在您的Role表中添加(或添加)Sequence列,以便您可以在表格中定义序列 - 然后仅限于ORDER BY Role.Sequence

3

这与“sql ORDER BY multiple values in specific order?”这个问题实质上相同,我强烈建议您看看那里介绍的解决方案。

+0

我唯一的建议是,如果你加入到“角色”表,然后添加一个“订单”或类似命名的字段,加入角色表,然后按该字段排序。这将允许您在运行时指定顺序,这是我首选的方式。 – SplinterReality