You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 23:43:10