按特定值排序 - ORDER BY

4
我正在尝试使用ORDER BY对查询进行排序,其中我需要依次按照3列进行排序。第三列是特定值。
例如:如果我有3列a、b和c 我需要使用ORDER BY a,b desc,c='3' asc,c
我想要做的是首先按a进行排序,然后以降序方式按b进行排序,然后希望3的值被排序,然后是其余不是3的值。

哪个SQL产品?在标准SQL中,ORDER BY子句只能包括a)列名、b)as子句(“别名”)和c)序数位置。看起来你正在依赖于标准之外的供应商扩展,但是你的问题只有sql标签。 - onedaywhen
此外,通过结果集中的一列向用户公开排序顺序也是一个好的实践。 - onedaywhen
3个回答

9
 ORDER BY
  a,
  b desc,
  CASE WHEN c = 3 THEN 0 ELSE 1 END,
  c

1
在“END”之后需要逗号。 - GendoIkari
实际上我们能不能做一些像 ORDER BY a, CASE WHEN b <> 3 THEN 0 ELSE 1 END, c, CASE WHEN b = 3 THEN 0 ELSE 1 END 这样的事情呢? - Raviteja
我需要的是首先对具有除3以外其他值的a和b进行排序,然后对c进行排序,然后再次对具有值3的b进行排序。 - Raviteja

1
假设使用的是SQL Server,尝试使用CASE:
ORDER BY a, b desc, CASE c WHEN '3' THEN 0 ELSE 1 END, c ASC

0
ORDER BY
a,
b desc,
CASE c when 3 then 1 else 0 end

@Gendolkari,我认为你的意图是正确的,但是你把1和0搞反了。 - bobs

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