2013-07-01 52 views
1
$query = "SELECT products.*, login1.* 
      FROM products LEFT JOIN login1 
       ON products.id_user = login1.id_user 
      WHERE products.product LIKE '".$search_keyword."' 
      ORDER BY products.product, products.rate " 

當第一次使用這種查詢產品率0名單的,但我想這顯示最後,在順序並無其他變動。我怎樣才能做到這一點。mysql命令是:跳過零結束列表

+1

'ORDER BY *** DESC' http://dev.mysql.com/doc/refman/5.5/en/sorting-rows.html – Fracsi

+0

我想ASC訂單除零ZERO – PHP

+0

您需要一個if語句。 – karmafunk

回答

3

試試這個:

$query = " 
    SELECT products.*, login1.* 
    FROM products 
    LEFT JOIN login1 ON products.id_user = login1.id_user 
    WHERE products.product LIKE '" . $search_keyword . "' 
    ORDER BY IF(products.rate = 0, 1, 0), products.product, products.rate " 

這增加了初步檢查,排序順序,使產品具有的0率是具有不等於0率的所有產品上市之後。

1

嘗試這種情況:

SELECT products.*, login1.* 
FROM products 
LEFT JOIN login1 ON products.id_user = login1.id_user 
WHERE products.product LIKE '".$search_keyword."' 
ORDER BY products.product, products.rate = 0,products.rate 

它將通過是否率的一階是0。如果它是0,那麼這將得到的值1和被放置在端部。其他值將按平常的速率排序。

+0

在考慮'products.rate'之前,不會先通過'products.product'命令? – Aiias

+0

@Aiaias是的,這是訂單是如何在原來的,所以我想保留這一點。 – Jim