订购......在(...)ASC

时间:2015-06-02 15:10:20

标签: sql sql-server

我希望首先获得某些位置的所有个人资料:

d,e,f,g

这会引发错误:"关键字' IN'附近的语法不正确。"。如果我删除了order子句,则返回结果。

这里有什么问题?

4 个答案:

答案 0 :(得分:11)

你可以重写一下,给出一个可以排序的整数:

case when location IN ('a', 'b') then 0 else 1 end DESC

答案 1 :(得分:2)

您无法在IN中使用ORDER BY。将其更改为:

ORDER BY location ASC, --will sort a, then b, then c

答案 2 :(得分:1)

所以ORDER BY语法是:

ORDER BY column_name ASC|DESC, column_name ASC|DESC

所以

位置IN('a','b')

ISDEFAULT

位置

必须是列名

尝试:

location DESC
isDefault DESC

IN也只能用于WHERE子句

来源:

http://www.w3schools.com/sql/sql_in.asp

http://www.w3schools.com/sql/sql_orderby.asp

答案 3 :(得分:1)

如果您使用的是SQL Server 2012或更高版本,则可以使用IIF()命令将真/假表达式转换为使用最少代码的结果。

ORDER BY IIF(location IN ('a','b'), 1, 0) ASC