按字母顺序排序的SQL查询

8
我有一个如下的表格:
ID    Description
--------------------
1     Bacteria
2     Cell Lines
3     Compounds
4     Virus
5     Others
6     AntiBody

我需要的是一个单一的SQL查询,按字母顺序排序,但将“其他”(ID 5)作为最后一条记录。 这是否可能? 如有帮助,不胜感激。 谢谢。
2个回答

10
SELECT ID, Description
    FROM YourTable
    ORDER BY CASE WHEN ID = 5 THEN 1 ELSE 0 END,
             Description

10
SELECT ID, Description
FROM yourtable
ORDER BY CASE WHEN Description = 'Others' THEN 1 ELSE 0 END, Description

你不觉得按照ID进行过滤更加明智吗? - syneptody
3
@syneptody: 不是特别这样想。你为什么这样认为呢?个人而言,除非有非常充分的理由,我不太喜欢在源代码中使用魔法数字。如果你想提高性能,可以获取描述为“Others”的行的ID并使用它,但考虑到只有6行,对我来说这似乎过火了(甚至可能会更慢!)。无论如何,原始问题没有提供关于他具体需求的太多信息,因此很难说什么才是最好的。 - Mark Byers
2
这当然是一个具体问题具体分析的情况,但总的来说:1)ID更有可能被包含在索引中;2)在ID不变的情况下,Description更有可能发生变化;3)如果你使用ID(在这种情况下),你可以在不改动查询的情况下更改想要显示的最后一个值(只需更新ID = 5的描述即可)。 - syneptody
@Mark,感谢您的回答。您说得对,这个表永远不会超过200条记录,因此效率/性能并不是一个大问题。 - MadushM
@syneptody 我不知道1)是什么,但我同意2)和3),所以我同意使用ID=5。 - MadushM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接