sql语句应用

业务场景:
课程关联多个班级,班级记录库存,下架状态,删除状态等,某个课程上关联的班级只要有一个库存大于0并且是在售即算该课程为可售状态;课程上记录销量
要求:
按照特定学科或者全部学科推荐在售(非下架状态,库存>0)的,销量前10的课程课程,

select p.min_age, p.max_age,p.sale_num,p.name,p.category_id ,p.test_flag ,k.stock_surplus,p.`id` ,p.`end_date`,p.`end_time`,
p.`effective_duration`, p.`code`,p.`content`,p.`course_type`,p.`end_time`,p.`deleted`,p.`disable`,p.`heat`,p.`hide`,p.`introduction`,p.`join_type`,p.`org_code`,p.`score`,p.`start_date`,p.`status`

from product_spu p 
#联合查询班级表
INNER JOIN product_sku k ON p.`id` = k.`spu_id` 

where p.deleted=0 and p.disable=0 and p.hide=0 and p.status=2  and p.test_flag=0 
-- and (p.min_age >=13 or max_age >=13)

and((p.min_age <= 10 and 10<= p.max_age) or (p.min_age <= 13 and 13<= p.max_age)) 

and p.`category_id` in (8,9,10,1)

group by p.`id` 
#判断课程关联的班级中有至少一个班级是在售
having  count(k.status=2 and k.deleted=0 and k.disable=0 and k.hide=0 and k.stock_surplus >0 or NULL )>0

order by sale_num DESC limit 10

知识点:

1group by having用法,写在where语句后面,分组
2、count里面是表达式时,写法:表达式+or NULL
3、前10limit 10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值