我在sql server2008中有一个表“Category”。它有2列-ID,Name。我在其中插入了3个名称:
1.Case Report
2.Original Article
3.Letter to Author
4.Submmited Article
我使用以下查询来显示表格数据:
按名称desc
从类别顺序中选择*显示结果为:
4.Submmited Article
2.Original Article
3.Letter to Author
1.Case Report
但我希望将表值显示为:
2.Original Article
1.Case Report
3.Letter to Author
4.Submmited Article
请帮助我。
答案 0 :(得分:2)
SELECT *
FROM Category
ORDER BY CASE
WHEN NAME = 'Original Article' THEN 1
WHEN NAME = 'Case Report' THEN 2
WHEN NAME = 'Letter to Author' THEN 3
END ASC
答案 1 :(得分:1)
鉴于您不想使用字母排序,我建议添加另一列来执行排序。例如,创建一个这样的表:
CREATE TABLE MY_TABLE (
ID int PRIMARY KEY,
NAME varchar(50),
SORT_ORDER int
)
您将填充SORT_ORDER列数据以匹配您需要的顺序,然后可以使用以下内容获取排序数据:
SELECT * FROM MY_TABLE ORDER BY SORT_ORDER
希望有所帮助。
答案 2 :(得分:1)
看起来您正在尝试进行自定义排序,在这种情况下,您可以添加第三列,例如SortID int,然后按SortID对结果集进行排序。例如
SELECT ID, Name
FROM TableName
ORDER BY SortID