0

我试图了解自然全外连接是如何工作的,所以让我们考虑一下表 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 

请注意,这一切都是手工完成的。

4

0 回答 0