利用union去重性质完成条件查询

sql查询记录:利用union去重性质完成不同条件下的查询需求

记录最近在工作中遇到的一个sql查询需求:
有一张result表,id字段表示每次的任务id,需求为返回id最大的一次任务中的所有记录,如果查询结果条数大于等于3,则返回所有查询结果,但如果结果数不超过3条,则直接返回result表中date最近的三条记录。
在这里插入图片描述

例如上图示例中,max(id)为id=2的共两条记录,不满足大于等于3的条件,因此需要根据date返回最新的三条记录。
从逻辑上首先需要根据max(id)在result表中进行查询:
在这里插入图片描述
然后这里涉及到一个判断,IF(结果条数<3),实际查询结果为:
在这里插入图片描述
(这里进行了很多尝试,想用if…else,越写越复杂还没法满足条件。。。省)

最后想到两个查询结果的列都一致,是不是可以用union…
于是,其实很简单的做法,**利用union会去掉重复的行的特性 **(union all 则会允许重复值出现),直接将两种情况下的查询组合起来:
在这里插入图片描述
就完成啦啦啦啦~

不知道大家还有没有其他方法,求教~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值