这可能是更多的设计问题,但是我希望没有太多的伏都教徒是有可能的。
假设我有一个像这样的表:
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个小组。
有任何想法吗?
您首先做错了事,然后尝试对其进行修复。那是行不通的。
您想加入的事物是select * from stuff where grp = 'a'和select * from stuff where grp = 'b'。因此,加入这些:
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小提琴