小编典典

SQL Full Out Join在同一表的同一列上

sql

这可能是更多的设计问题,但是我希望没有太多的伏都教徒是有可能的。

假设我有一个像这样的表:

SELECT * FROM stuff;

 id   grp
  1     a
  2     a
  3     a
  1     b
  2     b
  4     b

我想得到这样的东西(ID在列中分组):

a.id    b.id
   1       1
   2       2
   3    null
null       4

这可能吗?我已经尝试过以下查询…

SELECT a.id, b.id FROM stuff a
FULL OUTER JOIN stuff b ON a.id = b.id
WHERE a.grp = 'a' AND b.grp = 'b';

…但是我只得到公共节点:

a.id    b.id
   1       1
   2       2

我也尝试过在JOIN ON和WHERE上玩,但是似乎无法获得预期的结果。

性能不是问题,我可以假设只有2个小组。

有任何想法吗?


阅读 160

收藏
2021-04-14

共1个答案

小编典典

您首先做错了事,然后尝试对其进行修复。那是行不通的。

您想加入的事物是select * from stuff where grp = 'a'select * from stuff where grp = 'b'。因此,加入这些:

select a.ID as a, b.ID as b from
  (select * from stuff where grp = 'a') a
full join
  (select * from stuff where grp = 'b') b
on b.id = a.id

SQL小提琴

2021-04-14