繁体   English   中英

Select 按特定顺序记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM