2013-08-30 61 views
2

我試圖從查詢的這部分得到最大的價值:當有空值在MySQL中使用GREATEST

greatest((follette_title.usedbuying_price *1.37) or 
     (amtext.price*1.37) or 
     (nebraska.price *1.2) or 
     (tichenor.price *1.25)) 

我的問題是,有表中的空值,所以這隻能返回空。如何避免在所有表上運行更新以將空值更改爲0?

回答

2

使用COALESCE功能

EG:

greatest(
    COALESCE((follette_title.usedbuying_price *1.37), 0), 
    COALESCE((amtext.price*1.37), 0), 
    COALESCE((nebraska.price *1.2), 0), 
    COALESCE((tichenor.price *1.25), 0) 
    ) 
+0

我需要找到所有4種價格的最大價值,而不僅僅是一個。 – Jim

+2

然後做一個合併每個 –

+0

這適用於一個記錄,但不是如果我有200個記錄我需要做它,我還能試試嗎? – Jim

1

我假設你的意思是:

greatest((follette_title.usedbuying_price *1.37), 
     (amtext.price*1.37), 
     (nebraska.price *1.2), 
     (tichenor.price *1.25) 
     ) 

or並沒有多大意義,在這方面。

如果假設所有的價格都大於0,你可以將它們轉換爲0;如果NULL

greatest(coalesce((follette_title.usedbuying_price *1.37, 0), 
     coalesce((amtext.price*1.37, 0), 
     coalesce((nebraska.price *1.2, 0), 
     coalesce(tichenor.price *1.25, 0) 
     )