使用 mySQL,我有一个表,其中有很多包含产品的行。每个产品都有包含名称、库存数量和上次购买日期的列。我想得到结果,其中所有库存量大于 0 的产品按名称排序(首先是该组),然后所有库存量为 0 的产品按上次购买排序。所以我不能使用 UNION 因为有两个顺序定义。以下是一些数据以便更好地理解:
表格数据:
名称 |库存|上次购买
--------------------------------------
产品1 | 0 | 2014-09-20
产品2 | 10 | 10 2014-09-20
产品3 | 0 | 2014-09-26
产品4 | 10 | 10 2014-09-20
产品5 | 0 | 2013-08-18
所需结果:
产品2 | 10 | 10 2014-09-20
产品4 | 10 | 10 2014-09-20 ...库存大于零的订单按名称ASC
产品1 | 0 | 2014-09-26
产品3 | 0 | 2014-09-20
产品5 | 0 | 2013-08-18 ... 这些是上次购买的空库存订单 DESC
由于分页,我需要它作为一个结果。
最佳答案
只需使用具有多个条件的 order by
子句即可:
order by (stock > 0) desc,
(case when stock > 0 then name end) asc,
(case when stock = 0 then lastpurchase end) desc;
关于mysql - SQL选择同一个表,两个不同的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26050383/