[英]Full outer join on multiple fields
我有几张学术期刊排名的表格,它们来自不同的来源和引用的指标。 我想将它们合并到一个表中,按日记汇总数据。
例如,第一个表具有以下列:
ISSN1 ISSN2 Journal_Name_1 Impact_Factor
第二个表有列
ISSN3 ISSN4 ISSN5 Journal_Name_2 Citations
日记名称在数据源之间有所不同,并且任何日记可能具有0个或多个ISSN号。 我想做的是用列创建一个新表
ISSN1 ISSN2 ISSN3 ISSN4 ISSN5 Journal_name_1 Journal_Name_2 Impact_factor Citations
通过合并第一个表中的一行与第二个表中的一个合并来包含表1或表2中列出的所有日记帐
( Journal_Name_1 = Journal_Name_2 ) OR ( at least one of ISSN1 or ISSN2 is equal to at least one of ISSN3, ISSN4, ISSN5)
产生结果的最有效方法是什么?
(目前数据在CSV文件中,我可以使用sqlite / mysql / postgresql /任何其他DBMS)
SQL小提琴演奏。
select t1.*, t2.*
from t1
left join t2 on (journal_name1 = journal_name2)
or (issn1 in (issn3, issn4, issn5))
or (issn2 in (issn3, issn4, issn5))
union all
select t1.*, t2.*
from t1
right join t2 on (journal_name1 = journal_name2)
or (issn1 in (issn3, issn4, issn5))
or (issn2 in (issn3, issn4, issn5));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.