我在SQL查询中订购时遇到了一些问题。
我在表'产品中有2个字段('价格'和' in_stock')。我想要做的是通过这两个字段对查询结果进行排序 - 通过' in_stock'而不是价格'。但是(!)一件重要的事情就是订购' in_stock'作为boolen。例如,表格是:
Name | Price | in_stock |
----------------------------------|
Product1 | 100 | 9 |
Product2 | 200 | 0 |
Product3 | 500 | 4 |
Product4 | 500 | 0 |
Product5 | 300 | 2 |
所以正确的订单结果是:
Product1 - 100, 9
Product5 - 300, 2
Product3 - 500, 4
Product2 - 200, 0
Product4 - 500, 0
第一步 - 按库存订购产品 - 如果产品缺货,则必须在列表末尾。按价格对产品进行分类 - 从最低到最高。
答案 0 :(得分:1)
只需在ORDER clausule中添加两列,即可按两列排序:
ORDER BY in_stock DESC, price ASC
答案 1 :(得分:0)
您可以在order by
子句中使用条件:
select name, price, in_stock
from yourtable
order by in_stock = 0, price
这将首先订购有库存的产品(无论多少),然后按价格订购。
或者您可以使用案例陈述来对结果进行排序:
order by case when in_stock > 0 then 0 else 1 end, price
答案 2 :(得分:0)
排序不只是添加2个订单子句,它需要额外的情况 - 当下面的内容达到所需的结果集时
select * from table_name
order by case when in_stock = 0 then 1 else 0 end , price,in_stock desc ;