这可能更像是一个设计问题,但我希望没有太多伏都教也可以。
假设我有一个这样的表:
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,但似乎无法获得理想的结果。
我在网上找到的最接近的问题是this one,但我也无法让UNION工作。
性能不是问题,我可以假设只有两个组。
有什么想法吗?
答案 0 :(得分:9)
你先做错了事,然后尝试修复它。那不行。
您要加入的内容是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