多表的合并查询SQL

数据中心的专题文献,涉及到多个表。前期是保存到mdref表,通过类型字段定义,现在又增加了一个新表,专门用来管理专题文献。而有的时候,可能两个表的专题都会涉及到。因此SQL查询比较复杂。

需求:

1. 保留两个表的数据

2. 保持文献的排序

最终SQL如下:

select  r.* from reference r right join
(
select refid,place from (
(
select sr.refid,sr.place from sourceref sr left join datasource ds on ds.sourceid=sr.sourceid
where ds.uuid='55667374-fe5c-4c98-8756-37e3b5496d5e'
order by sr.place
)  
union
(
 select mr.refid,mr.place from mdref mr where  mr.reftype=4 and mr.uuid='55667374-fe5c-4c98-8756-37e3b5496d5e' and mr.refid not in (
select sr.refid from sourceref sr left join datasource ds on ds.sourceid=sr.sourceid
where ds.uuid='55667374-fe5c-4c98-8756-37e3b5496d5e'
)
)
) a
) p on r.id=p.refid order by p.place

用到了union、临时表。

 


已发布

分类

,

来自

标签:

评论

《 “多表的合并查询SQL” 》 有 37 条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注