MariaDB如何先按库存状态排序再按商品新增日期倒序排列?
解决方案:优先展示有库存商品并按日期排序
完全可行,这正是实现你需求的正确思路。你需要先把库存状态转换成二元标识(有库存=1,无库存=0),再以此作为第一排序条件,日期作为第二条件,就能让所有有库存的商品优先展示,且同组内按新增日期从新到旧排序。
标准SQL写法(兼容所有数据库)
使用CASE语句统一转换库存状态:
SELECT * FROM products ORDER BY CASE WHEN stock > 0 THEN 1 ELSE 0 END DESC, date_added DESC;
MySQL 简洁写法
如果你的数据库是MySQL,还可以利用布尔表达式自动转1/0的特性,简化代码:
SELECT * FROM products ORDER BY (stock > 0) DESC, date_added DESC;
效果说明
这两种写法都会:
- 把所有
stock > 0的商品排在最前面,不管库存具体数量多少 - 有库存的商品内部,按
date_added从新到旧排序 - 无库存(
stock <= 0)的商品排在后面,同样按date_added从新到旧排序
完美匹配你“优先有库存,再按日期新到旧”的需求。
内容的提问来源于stack exchange,提问作者Whip
相关产品推荐
相关产品推荐

