我需要编写一个查询来从数据库中为搜索页面选择产品,此时查询非常简单
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
但这不起作用。
提前致谢
答案 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)