mysql 多层次多条件排序

首先说一下最近接到的一个需求
要求: 在商品详情页显示类似商品列表,
商品详情类别与查询结果要求
1. 类别相同
2. 第一优先级(供应商与品牌均相同)
3. 第二优先级(供应商相同品牌不同)
4. 第三优先级(供应商不同品牌相同)
5. 第四优先级(供应商与品牌均不相同)
6. 以上同一优先级时按销量倒叙
7. 每页显示20条记录

表结构及相关字段如下:
表名: 商品表: product 规格表: sku
字段: 类别: category_id, 商品编码: spu_code, 供应商编号: supplier_id, 品牌编号: brand_id, 销量: sale_quantity

注: 商品与规格为一对多关系或多对多关系

select * 
from product p inner join sku on p.spu_code=sku.spu_code and sku.`status`=1
WHERE p.goods_state=1 and p.category_id3=30004 
group by p.spu_code order by (case 
when p.supplier_id=80 and p.brand_id=2969 THEN 0 
when p.supplier_id=80 and p.brand_id!=2969 THEN 1 
when p.supplier_id!=80 and p.brand_id=2969 THEN 2
else 3 END), SUM(sku.sale_quantity) DESC limit 0, 20;

此类需求虽然难度不高, 但处理起来也算需求点技巧,记录一下,便于以后遇到类似需求使用, 同时欢迎有更好解决方法的小伙伴们多多交流共同进步!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值