从mysql有条件地选择字段

时间:2017-09-22 12:50:56

标签: mysql case

是否可以Select使用Case从多个字段中的一个字段中进行选择,具体取决于哪些字段为空?

我基本上想要为所有带有

逻辑的记录返回一个值
Return $Value from FIeldA if not null 
else from FieldB if not NULL 
else from FieldC if not Null 
else '0'

我使用Case / When / Then来比较特定字段的值,但不是比较字段之间的值而不确定是否可行。

2 个答案:

答案 0 :(得分:2)

简短回答,使用COALESCE

SELECT COALESCE(FieldA, FieldB, FieldC, 0) AS FieldName
FROM tableName;

它将为您提供来自三个字段FieldA, FieldB, FieldC的第一个不可为空的值。如果all都为null,那么它将返回0.您正在尝试做什么。

答案很长,使用CASE表达式。

答案 1 :(得分:1)

如果要检查多个字段,如果为null,则返回相同的结果0,然后使用COALESCE函数。这是简单的代码

SELECT COALESCE(filed1, filed2, filed3, 0) as output from table; 

了解更多信息 https://www.w3schools.com/sql/func_sqlserver_coalesce.asp

额外选项如果您想使用条件选择归档然后用例。这是演示代码

SELECT CASE 1 WHEN 1 THEN 'this is case one'
WHEN 2 THEN 'this is case two' 
ELSE 'this is not in the case'
END as 'how to execute case statement'; 

了解更多信息

https://dev.mysql.com/doc/refman/5.7/en/case.html

http://www.mysqltutorial.org/mysql-case-function/