我希望首先获得某些位置的所有个人资料:
d,e,f,g
这会引发错误:"关键字' IN'附近的语法不正确。"。如果我删除了order子句,则返回结果。
这里有什么问题?
答案 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子句
来源:
答案 3 :(得分:1)
如果您使用的是SQL Server 2012或更高版本,则可以使用IIF()
命令将真/假表达式转换为使用最少代码的结果。
ORDER BY IIF(location IN ('a','b'), 1, 0) ASC