2013-05-06 53 views
0

我正在寫查詢以顯示數據並在該查詢中添加子句。 我查詢我的查詢將不會工作,因爲在子句中的子句順序

SELECT * FROM `coupons` 
WHERE `status` = 'A' && `type` = '2'  
&& `time` > CURDATE() && `start_date` <= CURDATE() 
order by `stocks` asc 

在上面的查詢它得到由「股」,但在某些情況下,個股排序是零,我想表明此行的最後的話。 我該怎麼做,請幫忙。提前致謝。

+1

最簡單的方式把我的頭頂部,完全是在MySQL:創建一個存儲函數,返回你的價值如果非零則通過它,如果爲零則通過最高可能值。 (或者,像'order by(case stocks = 0 then 2000000000 else stocks end)'這樣的東西,但是eh。) – cHao 2013-05-06 06:46:16

回答

2
order by CASE WHEN `stocks` = 0 THEN 1 ELSE 0 END asc , `stocks` asc 
+0

完美的方法... +1 – 2013-05-06 06:53:51

+0

嘿,哥們,非常感謝,它的工作:-) – Danny 2013-05-06 06:58:16

0
SELECT *, (if(`stocks` != 0,`stocks`,"")) as newstocks FROM `coupons` 
WHERE `status` = 'A' && `type` = '2'  
&& `time` > CURDATE() && `start_date` <= CURDATE() 
order by newstocks asc 

使用上面的代碼。

0

默認情況下它是遞增,所以你不必客氣。嘗試下面的一個

SELECT * FROM券WHERE狀態=通過殼體股 'A' & &類型= '2' & &時間> CURDATE()& & START_DATE < = CURDATE()命令!= 0,那麼股結束,股票

它首先列出的項目與股票是nozero,然後用股票清單的行數=零