如果发生特定值,我会尝试回退到默认值。伪代码就是这样的:
IS(GREATEST(
IFNULL(ist.change_date, ''),
IFNULL(a.change_date, ''),
IFNULL(co.commented_on, '')
), '', NULL) last_updated_tmp
它的结构如下
IS(EXPRESSION, VALUE_TO_HANDLE, DEFAULT_VALUE)
如果EXPRESSION
生成VALUE_TO_HANDLE
,则应返回DEFAULT_VALUE
,而不是EXPRESSION
的结果。
我不会做像
这样的事情IF(GREATEST(IFNULL(ist.change_date, ''), IFNULL(a.change_date, ''), IFNULL(co.commented_on, '')) = '', NULL, GREATEST(IFNULL(ist.change_date, ''), IFNULL(a.change_date, ''), IFNULL(co.commented_on, '')))
因为感觉很脏。
答案 0 :(得分:0)
使用CASE
SELECT
CASE
WHEN Expression = Value THEN Default
ELSE Expression
END
FROM mytable