mysql命令由MIN()在哪里NOT NULL

时间:2013-07-09 14:43:31

标签: mysql case where min

我有点长的选择,我加入了很多桌子。我需要做什么:我选择

的最低价格
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";

1 个答案:

答案 0 :(得分: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