我有两张表,如下所示:
t1
major math biology
1 ann n/a
1 n/a rosa
2 n/a tim
t2
major english
2 elias
3 tony 我的目标是将它们与期望的输出合并,如下所示(在数学、生物和英语中每行只能有一个名称):
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我尝试执行完全连接,然后合并语句,但是它没有工作,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,所以如果您能给我一个如何解决这个问题的建议,我将非常感激。
发布于 2021-04-14 15:35:43
你的问题的字面答案似乎是使用UNION ALL
SELECT major, math, biology, 'n/a' AS english FROM t1
UNION ALL
SELECT major, 'n/a', 'n/a', english FROM t2更好的答案是指出您的数据结构是的,是非常有问题的。如果您扩展到,为什么您的数据看起来像这样,以及您想要用它做什么,我们可以指出一个更合适的结构。
发布于 2021-04-14 15:35:55
我认为你需要一个工会,而不是加入:
select major, math, biology, 'n/a'
from t1
union
select major, 'n/a', 'n/a', english
from t2https://stackoverflow.com/questions/67094376
复制相似问题