[英]Select record in a specific order
我有一张像下面这样的桌子..
Select name from t1;
操作:
name
----
A
D
X
Z
想要像下面这样的操作
Name
-----
X
A
D
Z
不使用联合运算符应该是单个查询
仅针对这些值:
SELECT name FROM t1
ORDER BY
case name when 'X' then 0 else 1 end,
name
X 是唯一一个不按字母顺序排列的,所以如果我们使用 case 将 0 分配给它,将 1 分配给其他所有内容,并首先按 0/1 排序,那么我们最终会得到 X 首先排序,其他所有内容都绑定1. 在我们对 CASE 排序之后,然后按名称的字母顺序排序来解决平局
还有其他类似的技巧,你可以使用解码,什么时候给所有东西一个值(就像 gmb 那样),用 null 替换 X 并排序 NULLS FIRST,用将在 A 之前排序的东西替换 X,例如 0...
你想要一个固定的条件排序,像这样吗?
select name
from t1
order by
case name
when 'X' then 1
when 'A' then 2
when 'D' then 3
when 'Z' then 4
else 5
end,
name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.