2013-07-09 83 views
1

我有點長選擇,在那裏我加入很多表。我需要做的是:我選擇最低價格mysql order by MIN()其中NOT NULL

SELECT MIN(accomodation_price.price) AS price_from 

一切工作的很好,直到我想訂購price_from結果。好吧,我知道我不能使用ORDER BY price_from所以我試圖使用ORDER BY MIN(accomodation_price.price),但我想在CASE中使用它。我選擇的作品不錯,但它適用的第一個結果,這對MIN(accomodation_price.price)沒有任何價值...首先我想要一些價值的結果,然後其他人...

這是我的代碼,行與MIN ....不工作,我不知道爲什麼。我也嘗試過使用WHERE IS NOT NULL但同樣....

ORDER BY 

      CASE 

       WHEN accomodation.valid_to>=NOW() AND accomodation.valid_from<=NOW() THEN 0 
       WHEN NOW()>accomodation.valid_to AND accomodation.valid_to!='0000-00-00' THEN 1 
       WHEN MIN(accomodation_price.price) > '0' THEN 2 
       ELSE 3 END"; 
+0

accomodation_price.price的字段類型是什麼? – MikeTheReader

+0

它是浮動類型 – general666

+0

我忘了補充說,當有空白的結果 - 這意味着沒有任何在accomodation_price中的行...所以我不知道在這種情況下,當我選擇MIN(accomodation_price.price ) – general666

回答

1

你應該做的是包括結果數據集中場(連同CASE),又一select然後以通過把它包那個領域。例如:

select * from 
(select field1,field2,..., 
(CASE 
WHEN accomodation.valid_to>=NOW() AND accomodation.valid_from<=NOW() THEN 0 
WHEN NOW()>accomodation.valid_to AND accomodation.valid_to!='0000-00-00' THEN 1 
WHEN MIN(accomodation_price.price) > '0' THEN 2 
ELSE 3 END) as field3 from table1,table2...,tableN) as R 
order by R.field3