mysql - SQL选择同一个表,两个不同的顺序

标签 mysql sql

使用 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/

相关文章:

mysql - 如何使用换行符连接多个字段

mysql - 使用 MySQL 无符号整数是不好的做法吗?

php - 在 Woocommerce 中删除重复的导入订单

c# - 在循环中创建的分隔字符串

php - 错误号 : 150 "Foreign key constraint is incorrectly formed" how can i fix this?

java - 将对象按原样保存在数据库中还是保存为 json?

php - 使用foreach向数据库插入数据

sql - 什么是最优? UNION vs WHERE IN (str1, str2, str3)

mysql - 如何查找哪个用户删除了MYSQL中的存储过程

sql - 如何在 Grafana 中获取对 AWS/RDS 的查询