业务需求中,连表查询根据表的某个字段,这个字段可能为空
如果为空,根据这个表的另外一个字段查询,用union连接对结果去重即可

<select id="selectByNull" resultMap="BaseResultMap">SELECT DISTINCT b.SAMPLE_NO,b.ID,b.SPECIMEN_ID,b.RECEIVED_SPECIMEN_TIME,b.RECEIVED_SPECIMEN_PLACE,b.RECEIVER,b.SENDER,b.REMARK,b.RECORD_STATUS,b.CREATE_TIME,b.MODIFY_TIME,r.Name,t.ASSAY_NOFROM BIZ_SPECIMEN_LAB_RECEPTION bLEFT JOIN BIZ_ASSAY_ORDER_SAMPLE o on o.SAMPLE_NO=b.SAMPLE_NOLEFT JOIN RES_LABORATORY r on r.ID=o.SAMP_PREP_DEPT_CODELEFT JOIN BIZ_ASSAY_TASK_INFO t ON t.SAMPLE_NO=b.SAMPLE_NOLEFT JOIN BIZ_ASSAY_ITEM_DATA d on d.SPECIMEN_ID=b.SPECIMEN_IDWHERE 1=1AND d.ASSAY_STATUS=0<if test="laboratoryId!=null and laboratoryId!=''">AND r.ID=#{laboratoryId}</if><if test="sampleNo!=null and sampleNo!=''">AND b.SAMPLE_NO=#{sampleNo}</if><if test="fromDate!=null and fromDate!=''">and <![CDATA[b.RECEIVED_SPECIMEN_TIME>=to_date(#{fromDate}, 'yyyy-mm-dd') ]]></if><if test="toDate!=null and toDate!=''">and <![CDATA[b.RECEIVED_SPECIMEN_TIME<=to_date(#{toDate}, 'yyyy-mm-dd') ]]></if>UNIONSELECT DISTINCT b.SAMPLE_NO,b.ID,b.SPECIMEN_ID,b.RECEIVED_SPECIMEN_TIME,b.RECEIVED_SPECIMEN_PLACE,b.RECEIVER,b.SENDER,b.REMARK,b.RECORD_STATUS,b.CREATE_TIME,b.MODIFY_TIME,r.Name,t.ASSAY_NOFROM BIZ_SPECIMEN_LAB_RECEPTION bLEFT JOIN BIZ_ASSAY_ORDER_SAMPLE o on o.SAMPLE_NO=b.SAMPLE_NOLEFT JOIN RES_LABORATORY r on r.ID=o.SAMP_PREP_DEPT_CODELEFT JOIN BIZ_ASSAY_TASK_INFO t ON t.SAMPLE_NO=b.SAMPLE_NOLEFT JOIN BIZ_ASSAY_ITEM_DATA d on d.ASSAY_TASK_INFO_ID=t.IDWHERE 1=1AND d.ASSAY_STATUS=0<if test="laboratoryId!=null and laboratoryId!=''">AND r.ID=#{laboratoryId}</if><if test="sampleNo!=null and sampleNo!=''">AND b.SAMPLE_NO=#{sampleNo}</if><if test="fromDate!=null and fromDate!=''">and <![CDATA[b.RECEIVED_SPECIMEN_TIME>=to_date(#{fromDate}, 'yyyy-mm-dd') ]]></if><if test="toDate!=null and toDate!=''">and <![CDATA[b.RECEIVED_SPECIMEN_TIME<=to_date(#{toDate}, 'yyyy-mm-dd') ]]></if>
</select>

union,默认为union distinct,已经对结果去重了,所以不用加distinct
union,返回去重后的数据
union all,返回所有的数据

mybatis的union查询相关推荐

  1. 还在用分页?你out了 !试试 MyBatis 流式查询,真心强大!

    欢迎关注方志朋的博客,回复"666"获面试宝典 基本概念 流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果.流式查询的好处是能够降低内存使 ...

  2. 还在用分页?太Low !试试 MyBatis 流式查询,真心强大!

    以下文章来源方志朋的博客,回复"666"获面试宝典 基本概念 流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果.流式查询的好处是能够降低内 ...

  3. 强大:MyBatis 流式查询

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! ‍基本概念 流式查询指的是查询成功后不是返回一个集合而是返 ...

  4. mysql和redis统计网站活跃度,最代码网站用户私信列表采用mysql union查询优化为Redis查询的经验和相关代码片段分享...

    由于用户和私信的数据量逐渐增加,查询用户和其他用户的私信合并排重排序的sql语法给mysql带来了很大的压力,springdata jpa的hql查询语法如下:select id from (sele ...

  5. mysql union查询_一本彻底搞懂MySQL索引优化EXPLAIN百科全书

    MySQL逻辑架构介绍 日常在CURD的过程中,都避免不了跟数据库打交道,大多数业务都离不开数据库表的设计和SQL的编写,那如何让你编写的SQL语句性能更优呢? 先来整体看下MySQL逻辑架构图: M ...

  6. SQL Server-聚焦UNIOL ALL/UNION查询(二十三)

    前言 本节我们来看看有关查询中UNION和UNION ALL的问题,简短的内容,深入的理解,Always to review the basics. 初探UNION和UNION ALL 首先我们过一遍 ...

  7. MyBatis like 语句查询

    MyBatis like 语句查询 like CONCAT('%',#{keyWord},'%') 用CONCAT() 是最为推荐的. <select id="queryNewsByK ...

  8. MyBatis 流式查询

    基本概念 流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果.流式查询的好处是能够降低内存使用. 如果没有流式查询,我们想要从数据库取 1000 万条记录而又没 ...

  9. MyBatis多表查询之XML和注解实现(resultMap结果集映射配置数据库字段与实体类属性一一映射)

    MyBatis多表查询 多表模型分类 一对一:在任意一方建立外键,关联对方的主键. 一对多:在多的一方建立外键,关联一的一方的主键. 多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键. 数 ...

最新文章

  1. leetcode刷题笔记342 4的幂
  2. Windows_Reverse2逆向寒假生涯(25/100)
  3. [算法][二分查找][排除法]
  4. TortoiseSVN检出链接(可用于与站点集成)
  5. android 倒计时handle,android -handler 实现倒计时
  6. Error in moviepy setup command: 'extras_require' must be a dictionary whose values are strings or li
  7. jsonrpc php使用,php实现的一个简单jsonrpc框架实例
  8. 超详细汇总21个mysql优化实践【收藏版MySQL优化】
  9. Elasticsearch Index Template(索引模板)
  10. 对ttl和cmos电路的理解
  11. java基础之ArrayLis类
  12. 最新 Hostinger域名转出教程 (2019年6月版本)
  13. 利用nat123解决微信公众号对接服务器必须为80端口的问题
  14. 小胖子日记之扯淡的生活2
  15. PPT使用技巧 一 更改幻灯片版式
  16. Ubuntu14.04下无线网卡TP-Link TL-WDN5200的驱动安装
  17. 小伙子不讲武德,竟用Python爬取了B站上1.4w条马老师视频数据来分析
  18. 微信小程序反编译的应对方法
  19. Storm-电商实时交易风控系统
  20. 【python--爬虫】彼岸图网高清壁纸

热门文章

  1. PyCharm去掉满屏的波浪线
  2. docker 在esx上的网络配置
  3. Oracle 体系结构2 - 共享和专用服务器
  4. bidirectional pathtracing算法学习
  5. C++:构造函数2——拷贝构造函数
  6. ST17H26定时器注意事项
  7. C++ Primer 5th笔记(1)chapter 1
  8. 2021年第二届“华数杯”全国大学生数学建模竞赛
  9. HTML5各种标签总结(HTML、head)
  10. 爬虫的基本知识第一个请求requests模块的基本使用