簡體   English   中英

在多個字段上進行完全外部聯接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM