sql按列中的特定值排序,而不是按字母顺序排列同一列的其余部分

时间:2012-01-19 15:18:06

标签: sql sql-server-2005

有一个简单的select * from myTable查询和一个名为Fruits

的列

Fruits包含以下数据:

Apple
Pear
Peach
Plum
Grape

我总是首先要Grape,然后依次要其余的,所以结果将是

Grape
Apple
Peach
Pear
Plum

一如既往地感谢您的帮助!

3 个答案:

答案 0 :(得分:7)

我会尝试这样的事情:

DECLARE @myTable TABLE([Fruits] VARCHAR(20))
INSERT INTO @myTable VALUES('Apple')
INSERT INTO @myTable VALUES('Pear')
INSERT INTO @myTable VALUES('Peach')
INSERT INTO @myTable VALUES('Plum')
INSERT INTO @myTable VALUES('Grape')

SELECT * 
FROM @myTable
ORDER BY
    CASE WHEN([Fruits] = 'Grape') THEN 0 ELSE 1 END,
    [Fruits]

ORDER BY中,您在[Fruits]字段为Grape时分配值,以便您可以先对其进行排序,然后对{{1}进行二次排序}} field。

答案 1 :(得分:3)

select * from myTable
order by
     case when Fruits = 'Grape' then 0 else 1 end,
     Fruits

答案 2 :(得分:2)

在Fruits表中添加一个序数列,并为Grapes指定最低序数(1),将其余水果添加到不同的值(2表示效果正常)。

然后您可以按顺序排序,然后按水果名称排序。这将把Grapes放在顶部,然后以Alpha顺序放在下面。