[英]mysql Select Query 2 where options
我需要编写一个查询来从数据库中为搜索页面选择产品,此时查询非常简单
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
但这不起作用。
提前致谢
您可以按多列进行排序
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
尝试这个:
SELECT *
FROM products
WHERE stock > 0
ORDER BY
Case when rrp != 0 then 0 else 1 end,
id DESC
SELECT * FROM products WHERE stock > 0 and rrp != 0 ORDER BY rrp DESC, id DESC
您的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
看起来你可能有其他意图,而不是你在这里提到的最简单的要求。
尝试这个
SELECT *
FROM products
WHERE stock > 0
CASE WHEN rrp != 0 THEN (ORDER BY rrp DESC)
CASE WHEN rrp= 0 THEN (ORDER BY id DESC)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.