mysql将列组合成一个并按字母顺序排序

时间:2016-07-05 23:22:52

标签: mysql

我在Mysql中有一个下表:

id | Name                  | Abbreviation  |
---+-----------------------+---------------+
 1 | aaaa                  | a             |
 3 | bbbb                  | NULL          |
 2 | cccc                  | c             |
 4 | dddd                  | d             |
 8 | eeee                  | NULL          |
---+-----------------------+---------------+

我想查询以返回以下内容。如果指定了缩写,则返回缩写,如果没有缩写,则返回name,但缩写和名称应按字母顺序排序,如下所示

id | Result   |
---+----------+
1  | a        |
3  | bbbb     |
2  | c        |
...

我该怎么做?

1 个答案:

答案 0 :(得分:1)

自己碰到了解决方案。由于Abbreviation列可以是NULL或有值,我可以使用COALESCE来获取第一个非空列,换句话说:

select id, coalesce(abbreviation, name) as thename from sometable order by thename;