sql 以某个字段升序排序排除0

今天遇到这样一个问题,数据初始化时排序字段为0,但是产品需求是排序字段升序排列,但是排序字段为0又想在最后进行展示。那我就只能修改之前sql了。

先展示最初sql写法:

SELECT
  pd.id AS "detailId", 
  pd.title,
  IFNUll(pd.brief_cont,'') AS briefCont,
      pd.content,
      case when (pd.content is not null AND pd.show_type='1') then null else pd.uri end  as uri,
  pd.create_date AS createDate, 
  pd.is_top,
  pd.sequence
FROM
    z_portal p
INNER JOIN z_portal_details pd ON p.id = pd.protal_id
INNER JOIN z_portal_style_details zsd ON p.school_portal_style = zsd.style_id 
AND pd.exercise_type = zsd.`code`
WHERE
    p.status = 0
AND p.is_delete = 0
AND p.id = 21
AND p.tenant_id = '002'
AND pd.is_delete = 0
AND pd.type = 2
AND pd.exercise_type = 1
AND pd.coordinate=1
AND pd.tenant_id = '002'
AND zsd.is_delete = 0
AND zsd.parent_id = 0
AND zsd.tenant_id = '002'
GROUP BY
    pd.id
ORDER BY
    pd.is_top desc, pd.sequence = 0,pd.sequence asc , pd.create_date desc

数据返回:
在这里插入图片描述
根据需求sql调整后:

SELECT
	pd.id AS "detailId", 
	pd.title,
	IFNUll(pd.brief_cont,'') AS briefCont,
			pd.content,
			case when (pd.content is not null AND pd.show_type='1') then null else pd.uri end  as uri,
	pd.create_date AS createDate, 
	pd.is_top,
	pd.sequence
FROM
		z_portal p
INNER JOIN z_portal_details pd ON p.id = pd.protal_id
INNER JOIN z_portal_style_details zsd ON p.school_portal_style = zsd.style_id 
AND pd.exercise_type = zsd.`code`
WHERE
		p.status = 0
AND p.is_delete = 0
AND p.id = 21
AND p.tenant_id = '002'
AND pd.is_delete = 0
AND pd.type = 2
AND pd.exercise_type = 1
AND pd.coordinate=1
AND pd.tenant_id = '002'
AND zsd.is_delete = 0
AND zsd.parent_id = 0
AND zsd.tenant_id = '002'
GROUP BY
		pd.id
ORDER BY
		 pd.is_top desc, pd.sequence = 0,pd.sequence asc , pd.istop_time DESC,pd.create_date desc

数据返回就发生变化:
在这里插入图片描述
这是因为:pd.sequence=0,表示排除等于0的,对不等于0的先进行排序,等于0放在最后按照正序排;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值