复杂的多列mysql命令

时间:2014-02-22 20:21:06

标签: mysql sql-order-by multiple-columns

我有一个产品数据库,产品按人气排序(number_sold)。问题是很多流行的产品都缺货。我想按number_sold排序,其中in_stock至少为1,然后显示缺货产品(仍按number_sold排序)。

示例数据:

Blue Car - stock 0 - sold 8
Red Car - stock 2 - sold 4
Yellow Car - stock 0 - sold 5
Tan Car - stock 8 - sold 1
Purple Car - stock 1 - sold 2

我想按以下顺序显示:

1) Red
2) Purple
3) Tan
4) Blue
5) Yellow

这可能在一个MySQL查询中吗?

2 个答案:

答案 0 :(得分:2)

您可以使用

select * from product order by (in_stock >0) desc, number_sold desc

Demo

答案 1 :(得分:0)

先按照基于库存水平的表达式排序,然后按销售数量排序:

select * from products
order by in_stock = 0, number_sold desc

这是有效的,因为在mysql中,true为1,false为0,因此对于所有库存产品,表达式in_stock = 0为零,将首先排序。对于缺货产品,表达式排在最后1