首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >外部连接的SQL查询帮助?

外部连接的SQL查询帮助?
EN

Stack Overflow用户
提问于 2010-08-10 17:38:03
回答 3查看 154关注 0票数 1

我有两张这样的桌子。

Table1

代码语言:javascript
复制
Column   |       Type       |
---------+------------------+
 cod     | text             |
 value99 | double precision |

Table2

代码语言:javascript
复制
Column   |       Type       |
---------+------------------+
 cod     | text             |
 value06 | double precision |

我想加入他们,这样我就会有一些东西

代码语言:javascript
复制
Column   |       Type       |
---------+------------------+
 cod     | text             |
 value99 | double precision |
 value06 | double precision |

问题是,并不是所有的代码都出现在两个表中,所以如果其中一个表中没有出现代码,它的值应该是null。最后,我想要这样的东西

代码语言:javascript
复制
cod      |      value99     |      value06     |
---------+------------------+------------------+
 1       |     10           |       20         |
 2       |     13           |      NULL        |
 3       |     NULL         |        15        |

我认为使用LEFT或RIGHT JOIN是不可能的。或许它就是..。有什么想法吗?Thx=)

编辑:我已经尝试了完整的外部连接,但结果类似于

代码语言:javascript
复制
code    value  code    value
1       10     1    4
2    15     NULL    NULL
NULL NULL 3 36

答案!:我找到了@Tobiasopdenbrouw的答案thx:

代码语言:javascript
复制
SELECT test1.code,test1.value,test2.value FROM public.test1 LEFT OUTER JOIN public.test2 ON test1.code=test2.code
UNION
SELECT test2.code,test1.value,test2.value FROM public.test1 RIGHT OUTER JOIN public.test2 ON test1.code=test2.code
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-10 17:42:19

我猜有点,因为您的问题没有详细描述所需的输出,但您可能需要一个助手查询,它将为您创建一个包含所有代码的表(一个包含2个SELECT查询的UNION )。然后,该帮助器表可以LEFT JOINED到您的2个源表)。

编辑:我自己想到了(完整的)外连接答案,但在字里行间的理解中,我认为这不是OP真正需要的。当然,我也可能是错的。

票数 2
EN

Stack Overflow用户

发布于 2010-08-10 17:39:17

使用FULL OUTER JOIN

使用完全外连接的

若要通过在联接结果中包含非匹配行来保留非匹配信息,请使用完全外联接。SQL Server提供full outer join运算符FULL OUTER JOIN,它包括两个表中的所有行,而不管另一个表是否具有匹配值。

考虑Product表和SalesOrderDetail表在其ProductID列上的联接。结果仅显示其上有销售订单的产品。ISO FULL OUTER JOIN运算符指示两个表中的所有行都将包含在结果中,而不管表中是否有匹配的数据。

可以将WHERE子句与完整的外部联接一起包含,以便只返回表之间没有匹配数据的行。以下查询只返回那些没有匹配销售订单的产品,以及那些与产品不匹配的销售订单(尽管在本例中,所有销售订单都与产品匹配)。

票数 1
EN

Stack Overflow用户

发布于 2010-08-10 18:08:45

代码语言:javascript
复制
select 
    coalesce(t1.cod, t2.cod)
    ,t1.value99
    ,t2.value06
from 
    table1 t1 
    full outer join table2 t2 on t1.cod= t2.cod
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3447654

复制
相关文章

相似问题

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