2016-07-05 53 views
0

我有一个下表中的Mysql:MySQL的合并列到一个且按字母顺序

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

我想查询返回以下。如果指定的缩写,然后返回缩写,如果没有缩写,然后返回名称,但缩写,名字应该是按字母顺序排列,所以像这样

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

我怎样才能做到这一点?

回答

1

自己碰到了解决方案。因为Abbreviation列可以是NULL或有价值,我可以使用COALESCE那会得到我第一个非空列,换句话说:

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