全联接表避免重复
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
我有两个单独的表格,如下所示:
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