2013-05-10 24 views
2

我想實現最少的mysql查詢,但最少不應該算0我該怎麼做?如何在不計數0的情況下實現最少的mysql查詢?

這是我的查詢

LEAST(price, price_double, price_triple, price_quad) AS minvalue 

它現在正指望0,但我不想算0和搜索具有零

出例如

price   100 
    price_double  75 
    price_tripple 50 
    price_quad  0 

的結果minvalue將是50不是0,但現在它包括0.

請幫我一下o這樣做,我很麻煩,我搜索了很多,但沒有取得任何成功,感謝提前一百萬噸。

回答

1

您可以在least()函數中使用case來執行此操作。不幸的是,如果在更新版本的MySQL中有任何參數爲NULL,則least()將返回NULL。所以,這把空值大:

least(case when price > 0 then price else 999999 end, 
     case when price_double > 0 then price_double else 999999 end, 
     case when price_triple > 0 then price_triple else 999999 end, 
     case when price_quad > 0 then price_quad else 999999 end 
    ) 
+0

感謝所有回答我的工作,但戈登答案正是我想要的。 – usii 2013-05-10 15:06:55

1

使用where子句

SELECT LEAST(price, price_double, price_triple, price_quad) 
FROM .... 
WHERE LEAST(price, price_double, price_triple, price_quad) > 0 
+0

這對我不起作用..我沒有得到50,我得到空結果:'SELECT LEAST(100,75,50,0)FROM ... WHERE LEAST(100,75,50,0)> 0' – bitWorking 2013-05-10 15:06:09

1

這就像戈登·利諾夫的解決方案相同的只有一點點短:

LEAST 
(
    IF(price > 0, price, 999999), 
    IF(price_double > 0, price_double, 999999), 
    IF(price_triple > 0, price_triple, 999999), 
    IF(price_quad > 0, price_quad, 999999) 
) 
相關問題