为什么第二个关系会影响结果?

时间:2014-01-21 10:31:28

标签: mysql sql database

给定关系R(a,b)和S(c,d)。我执行以下查询

从R,S中选择a,b;

当S为空时,结果总是为空而R(a,b)非空。我没有得到S如何影响查询,即使不存在与S的交互。

2 个答案:

答案 0 :(得分:0)

这是因为无论您从查询中选择的项目,您仍然在两个表之间进行连接。

如果S为空,则连接的结果为零行,因为这是连接为您提供的。这确实是你所看到的。

如果S有10,000行,您将获得R中每行的那么多副本。

方式,您将看到来自R的正确行数(假设没有影响加入的where子句),如果S恰好在它的一行。

如果您没有在S中使用任何列进行查询,那么您实际上不应该将其列为源表。正确的查询是:

select a, b from R

答案 1 :(得分:0)

  

我不知道S如何影响查询,即使不应该与S

进行交互

因为A的笛卡儿积和空集是空集。参考:http://en.wikipedia.org/wiki/Empty_set

另外,请检查此Why is the Cartesian product of a set A and empty set an empty set?