我试图理解自然的全外连接是如何工作的,所以让我们考虑表R和S.
表R:
a | b | c | e
1 | null | 1 | 2
1 | 3 | null | 2
2 | 4 | 2 | 2
null | 5 | 2 | 2
null | 4 | 1 | 2
null | 2 | null | 2
0 | 2 | 4 | null
表S:
c | d
1 | 2
2 | 2
3 | 2
null | 2
4 | null
我从做的结果
select *
from R natural full outer join S
当时:
a | b | c | d | e
1 | null | 1 | 2 | 2
1 | 3 | null | 2 | 2
2 | 4 | 2 | 2 | 2
null | 5 | 2 | 2 | 2
null | 4 | 1 | 2 | 2
null | 2 | null | 2 | 2
0 | 2 | 4 | null | null
null | null | 3 | 2 | null
但是这不正确,因为以下查询中所有值的总和必须为20:
SELECT b, COUNT(*), AVG(a+d)
FROM R NATURAL FULL OUTER JOIN S
WHERE NOT d<>e
GROUP BY b
请注意,这一切都是手工完成的。