多表加入困境

时间:2017-03-08 08:51:35

标签: sql

假设我们执行了以下一组连接:

A - > B - > C - > d

这组连接在结果集中只产生一行。 现在,如果我们添加更多连接:

A -> B -> C -> D
     | 
     E -> F -> G

现在B也加入了E。

所有联接都是内部联接。

我们能保证结果集总是有0行或1行吗?

2 个答案:

答案 0 :(得分:0)

简单回答:否。如果有任何联接B - > E,E-> F,F-> G是一对多,那么您可以从查询中获得多行。

答案 1 :(得分:0)

是的,你可以。

如果要确保0或1行,则必须确保每个表都连接其主键或两侧都有唯一索引;你的WHERE子句也确保一个表返回0或1行。

成为唯一索引或主键非常重要,因为每个JOIN都可以确保多重性。具有唯一索引或主键确保(0,1)x(0,1)关系。