首页 > 解决方案 > 连接表 - 仅显示左表的每一行一次,并添加一行包含未连接到表的数据

问题描述

我有一个看起来像这样的表:

产品:

order_id  prices

_______  _____

2          20

3          11

null       40

订单:

id number

1      30

2      50

3      10

4      10

我想得到下表:

id      number  price

--      ------  -----


1       30      null

2       50      20

3       10      11

4       10      null

null(0) null(0) 40

外键显然是 order_id -> 订单。可以为空。

正如您可能看到的,如果有产品链接将它们组合在一起,我想包括表订单中的所有行。如果没有链接,则只显示 null 和“40”(“断开”产品的总和)

任何人都可以帮助我吗?

标签: sqlpostgresqljoin

解决方案


我想你想要一个full join

select o.id o.number, p.price
from orders o full join
     products p
     on p.order_id = o.id;

推荐阅读