当前位置: 首页 > article >正文

exists在sql中的妙用

最近有两处功能都用到了exists, 觉得它很好地用子查询的方式实现了对主表数据的过滤

1. 支持历史记录id查询主id

那就用子查询过滤一下,主记录对应的历史记录中要存在当前id

        <if test="!searchHistoryFlag">
            and cbi.is_last_submit = 1
            <if test="searchSubmitId != null and searchSubmitId != ''">
                and exists (
                    select
                        1
                    from
                        bendcompete_info t
                    where
                        t.vendor_id = cbi.vendor_id
                        and t.submit_user_mobile = cbi.submit_user_mobile
                        and t.submit_year = cbi.submit_year
                        and t.submit_month = cbi.submit_month
                        and t.submit_id = #{searchSubmitId}
                )
            </if>
        </if>
        <if test="searchHistoryFlag">
            <if test="searchSubmitId != null and searchSubmitId != ''">
                and cbi.submit_id = #{searchSubmitId}
            </if>
        </if>

2. 相同会员品牌下取最新月的数据

由于年和月是分开存储的,为了比较月份谁大谁小,那就把年乘以12跟月份相加,统一按月份进行比较
月份可以理解为12进制的数据

        select rc.* 
        from  bendcompete_prize_receive_config rc
        where rc.prize_status = 1
           and not exists (
                select
                    1
                from
                    bendcompete_prize_receive_config rc2
                where
                    rc2.member_brand_id = rc.member_brand_id
                    and rc2.submit_year * 12 + rc2.submit_month > (rc.submit_year * 12 + rc.submit_month)
            )


http://www.kler.cn/news/354704.html

相关文章:

  • Linux笔记---vim的使用
  • OpenHarmony 入门——ArkUI 自定义组件内同步的装饰器@State小结(二)
  • vue使用gdal-async获取tif文件的缩略图
  • 【系统架构设计师】案例分析考点情况分析和解题技巧(包括2009~2024年考点详情)
  • 详解UDP-TCP网络编程
  • 【C#生态园】提升数据处理效率:C#中多款数据清洗库全面解析
  • 【wpf】07 后端验证及令牌码获取步骤
  • [旧日谈]关于Qt的刷新事件频率,以及我们在Qt的框架上做实时的绘制操作时我们该关心什么。
  • 关于FFmpeg【使用方法、常见问题、解决方案等】
  • jmeter 对 dubbo 接口测试是怎么实现的?有哪几个步骤
  • 我谈结构自相似性SSIM——实质度量的是什么?
  • JavaScript 小技巧和诀窍:助你写出更简洁高效的代码
  • Scale Decoupled Distillation 论文中SPP发生了什么
  • 一款AutoXJS现代化美观的日志模块AxpLogger
  • k8s-配置网络策略 NetworkPolicy
  • docker/docker-compose里面Command和entrypoint的关系
  • 股票Tick数据如何获取做量化交易
  • springboot如何接入阿里云短信
  • Vue 3 中的状态管理:深入探讨 Vuex 和 Pinia 的比较与最佳实践
  • 初识git · 有关模型