2014-03-03 67 views
0

如果發生特定值,我會嘗試回退到默認值。僞代碼將是這樣的:如果列值與給定值相匹配時的回退值

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

如何將表達式存儲在[臨時變量](https://dev.mysql.com/doc/refman/5.0/en/example-user-variables.html)中? –

回答

0

使用CASE

SELECT 
    CASE 
     WHEN Expression = Value THEN Default 
     ELSE Expression 
    END 
FROM mytable 
+0

我也可以使用'IF(EXPRESSION = Default,Default,EXPRESSION)',所以它不是我要找的。 – TiMESPLiNTER

相關問題