2012-02-05 10 views
0

我有以下表如何基于两个字段之间的值进行比较来生成结果集?

id full_name nickname 
1 Jennifer Jen 
2 Jerome 
3 James 
4 Jeremiah J 
5 Geoffrey Jeff 

,我试图做一个名单,这样,如果一个学生有一个昵称,那么他们只会用这个名字,像这样。

id new_name 
1 Jen 
2 Jerome 
3 James 
4 J 
5 Jeff 

什么是查询我可以使用原表产生具有new_name作为学生的昵称,如果他们有一个结果集,如果有new_name作为他们的全名?

回答

2

如果“否绰号”指的是nickname为NULL,则你可以使用COALESCE

select id, coalesce(nickname, full_name) as new_name 
from your_table 

,若“否绰号”被表示为那么一个空字符串:

select id, 
     case nickname when '' then full_name else nickname end 
from your_table 

如果你可以是一个空字符串或NULL:

select id, 
     case coalesce(nickname, '') when '' then full_name else nickname end 
from your_table 
+0

抱歉,NICK_NAME字段为空'“”'如果有人没有一个绰号,我将如何去关于接近这个? – user784637 2012-02-05 06:36:28

+1

@LedZeppelin:我添加了一些适合你的选项。 – 2012-02-05 06:45:19

0

你c一个用mysql control flow function IFNULL

SELECT id, IFNULL(nickName, full_name) as new_name FROM your_table 

这里如果昵称为null,则返回FULL_NAME别的绰号返回

相关问题