我试图了解自然全外连接是如何工作的,所以让我们考虑一下表 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
请注意,这一切都是手工完成的。