2013-07-09 39 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