2011-07-26 61 views
1

此查詢根本就沒有排序結果我希望它的方式:簡單ORDER BY子句不能與內工作加入

$sql = mysql_query("select s.*, p.label, p.number 
        from `sales` as s 
        left join `pumps` as p on (p.id = s.id_pump) 
        where s.the_date >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY)) 
        order by CAST(s.amount_sale AS int) desc 
        limit 1") or die(mysql_error()); 

我得到一個MySQL錯誤。

+0

沒關係,amount_sale是VARCHAR。有沒有辦法將它轉換爲這個查詢中的一個整數,所以它的順序是正確的? – scarhand

+0

cast(s.amount_sale as int) –

+0

'ORDER BY CAST(s.amount_sale AS int)' –

回答

2

嘗試鑄造VARCHAR符號整數:

$sql = mysql_query("select s.*, p.label, p.number 
        from `sales` as s 
        left join `pumps` as p on (p.id = s.id_pump) 
        where s.the_date >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY)) 
        order by CAST(s.amount_sale AS SIGNED) desc 
        limit 1"); 
+1

完美謝謝!把它作爲一個int來投擲是一個錯誤。我今天學到了一個新的功能......耶。 – scarhand

+0

很高興它工作:) – Alp