【问题标题】:Full outer join on multiple fields多个字段的完全外连接
【发布时间】:2012-11-23 23:14:19
【问题描述】:

我有几个学术期刊排名表,来自不同的来源和不同的引用指标。我想将它们组合在一个表中,按日志汇总数据。

例如,第一个表有列:

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 sqlite outer-join


    【解决方案1】:

    SQL Fiddle 玩。

    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));
    

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 1970-01-01
      • 2015-05-02
      • 2014-08-08
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      相关资源
      最近更新 更多