mybatis的union查询
·
业务需求中,连表查询根据表的某个字段,这个字段可能为空
如果为空,根据这个表的另外一个字段查询,用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_NO
FROM BIZ_SPECIMEN_LAB_RECEPTION b
LEFT JOIN BIZ_ASSAY_ORDER_SAMPLE o on o.SAMPLE_NO=b.SAMPLE_NO
LEFT JOIN RES_LABORATORY r on r.ID=o.SAMP_PREP_DEPT_CODE
LEFT JOIN BIZ_ASSAY_TASK_INFO t ON t.SAMPLE_NO=b.SAMPLE_NO
LEFT JOIN BIZ_ASSAY_ITEM_DATA d on d.SPECIMEN_ID=b.SPECIMEN_ID
WHERE 1=1
AND 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>
UNION
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_NO
FROM BIZ_SPECIMEN_LAB_RECEPTION b
LEFT JOIN BIZ_ASSAY_ORDER_SAMPLE o on o.SAMPLE_NO=b.SAMPLE_NO
LEFT JOIN RES_LABORATORY r on r.ID=o.SAMP_PREP_DEPT_CODE
LEFT JOIN BIZ_ASSAY_TASK_INFO t ON t.SAMPLE_NO=b.SAMPLE_NO
LEFT JOIN BIZ_ASSAY_ITEM_DATA d on d.ASSAY_TASK_INFO_ID=t.ID
WHERE 1=1
AND 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,返回所有的数据
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)