首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全连接表避免重复

全连接表避免重复
EN

Stack Overflow用户
提问于 2021-04-14 15:12:20
回答 2查看 25关注 0票数 0

我有两张表,如下所示:

代码语言:javascript
复制
t1
  major     math      biology 
    1       ann        n/a 
    1       n/a        rosa
    2       n/a        tim

t2
  major    english       
    2       elias       
    3       tony        

我的目标是将它们与期望的输出合并,如下所示(在数学、生物和英语中每行只能有一个名称):

代码语言:javascript
复制
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中的所有名称都是重复的:

代码语言:javascript
复制
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,所以如果您能给我一个如何解决这个问题的建议,我将非常感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-14 15:35:43

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

代码语言:javascript
复制
SELECT major, math, biology, 'n/a' AS english FROM t1
UNION ALL
SELECT major, 'n/a', 'n/a', english FROM t2

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

票数 1
EN

Stack Overflow用户

发布于 2021-04-14 15:35:55

我认为你需要一个工会,而不是加入:

代码语言:javascript
复制
select major, math, biology, 'n/a'
from t1
union
select major, 'n/a', 'n/a', english
from t2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67094376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档