数据中心的专题文献,涉及到多个表。前期是保存到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、临时表。
发表回复