mysql选择Query 2 where选项

时间:2012-11-26 11:13:12

标签: php mysql

我需要编写一个查询来从数据库中为搜索页面选择产品,此时查询非常简单

SELECT * FROM products WHERE stock > 0 ORDER BY id DESC

此查询从最新版本开始带回产品很好,我们即将开始销售,所以我需要将查询更改为按销售下降的最新产品订购,然后展示其他未上市的产品降。如果产品在售,则rrp不等于0.有没有办法我可以这样做,而不必运行两个单独的查询?

正在考虑像

这样的事情
SELECT * FROM products WHERE stock > 0 ORDER BY (rrp != 0) DESC, id DESC

但这不起作用。

提前致谢

5 个答案:

答案 0 :(得分:2)

您可以按多列排序

SELECT * FROM products WHERE stock > 0 ORDER BY rrp DESC, id DESC

或2轮

SELECT * FROM products WHERE stock > 0 AND rrp != 0 ORDER id DESC

答案 1 :(得分:1)

试试这个:

SELECT * 
FROM products 
WHERE stock > 0 
ORDER BY 
Case when rrp != 0 then 0 else 1 end,
id DESC

答案 2 :(得分:0)

SELECT * FROM products WHERE stock > 0 and rrp != 0 ORDER BY rrp DESC, id DESC

答案 3 :(得分:0)

您的RRP是否像布尔值一样工作,以确定产品是否在销售中。

请查看以下参考SQLFIDDLE

select * from sale
where stock>0
and rrp <>0
order by stock desc, id

ID  STOCK   RRP
3   490     1
4   200     1
1   120     1

看起来你可能有其他意图而不是你在这里提到的最简单的要求。

答案 4 :(得分:0)

试试这个

       SELECT * 
              FROM products 
       WHERE stock > 0 

       CASE  WHEN rrp != 0 THEN (ORDER BY rrp DESC) 
       CASE  WHEN rrp= 0   THEN (ORDER BY id DESC)