全联接表避免重复

Full Join tables avoiding duplication

我有两个单独的表格,如下所示:

t1
  major     math      biology 
    1       ann        n/a 
    1       n/a        rosa
    2       n/a        tim

t2
  major    english       
    2       elias       
    3       tony        
          

我的目标是将它们与所需的输出合并,如下所示(每行只能有 1 个名字可以是数学、生物学和英语):

t1 + t2: 
  major     math      biology     english
    1       ann        n/a          n/a
    1       n/a        rosa         n/a
    2       n/a        tim          n/a
    2       n/a        n/a          elias
    3       n/a        n/a          tony

我尝试执行 FULL JOIN,然后执行 COALESCE 语句,但没有成功,t2 中的所有名称都是重复的:

SELECT   COALESCE(t1.major, t2.major) AS major, 
         COALESCE(t1.math, 'n/a') AS math, 
         COALESCE(t1.biology, 'n/a') AS biology,
         COALESCE(t2.english, 'n/a') AS english

FROM t1 
FULL JOIN t2 ON t2.major = t1.major 

我还在学习 SQL 所以如果你能给我一个如何解决这个问题的建议,我将不胜感激。

您问题的字面答案似乎是使用 UNION ALL

SELECT major, math, biology, 'n/a' AS english FROM t1
UNION ALL
SELECT major, 'n/a', 'n/a', english FROM t2

更好的答案是指出您的数据结构极度有问题。如果你扩展 为什么 你的数据看起来像这样,以及你想用它做什么,我们可以指出一个更合适的结构。

我认为你需要一个 UNION,而不是 JOIN:

select major, math, biology, 'n/a'
from t1
union
select major, 'n/a', 'n/a', english
from t2