Mysql排序依据:跳过零到列表末尾

时间:2013-07-01 14:08:01

标签: php mysql sql-order-by zero

$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的产品,但我希望它显示在最后,而顺序中没有其他更改。我怎样才能做到这一点。

2 个答案:

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

首先根据rate是否为0进行排序。如果为0,那么这将得到值1并放在最后。然后其他值将按照常规顺序排序。