MYSQL如果存在则返回一个值,如果不返回另一个值

时间:2017-10-29 16:03:50

标签: mysql select

我有一个简单的表格items),其中特别包含两个字段:group_namesingle_name

只有少数人有group_name的值,但我需要将{1}}作为其中一个返回。

如果display_name存在,则返回(即group_name),如果group_name as display_name为NULL,则返回group_name

我确信我可以做很多嵌套的select语句,但是我确信MYSQL使用if语句可以更容易地做到这一点。即在PHP代码中我会做这样的事情:

single_name as display name

我将在Angular中呈现数据,因此更喜欢SQL / API服务器在渲染时完成工作而不是客户端。

2 个答案:

答案 0 :(得分:3)

您可以使用IFNULL来解决此问题:

SELECT IFNULL(group_name, single_name) AS display_name FROM items

...为了完整性,您还可以使用CASE

SELECT CASE WHEN group_name IS NULL THEN single_name ELSE group_name END AS display_name FROM items

...或者您可以使用IF

SELECT IF(group_name IS NULL, single_name, group_name) AS display_name FROM items
  

演示: http://sqlfiddle.com/#!9/853182/3

答案 1 :(得分:3)

您也可以使用IF

SELECT 
 IF(group_name IS NULL, single_name, group_name) AS display_name 
FROM 
 [table] 

或CASE

SELECT 
 CASE 
  WHEN group_name IS NULL 
  THEN single_name 
  ELSE group_name
 END 
  AS display_name
FROM 
 [table]