让我们说,我们有如下的联接进行设置:多表连接两难困境
甲 - >乙 - “ç - > d
这组连接的结果集中只产生一个1行。 现在,如果我们增加更多的加入:
A -> B -> C -> D
|
E -> F -> G
现在B也加入了与E.
所有的连接是内部连接。
我们可以保证结果集总是会有0或1行吗?
让我们说,我们有如下的联接进行设置:多表连接两难困境
甲 - >乙 - “ç - > d
这组连接的结果集中只产生一个1行。 现在,如果我们增加更多的加入:
A -> B -> C -> D
|
E -> F -> G
现在B也加入了与E.
所有的连接是内部连接。
我们可以保证结果集总是会有0或1行吗?
简单的回答:不可以。如果任何连接B - > E,E-> F,F-> G是一对多的,那么您可能会从查询中返回多个行。
一对多关系取决于用于连接的列。双方都有英国或PK确保一对一。 – Lostblue
是的,你可以。
如果你想确保0或1行,你必须确保每个表都加入他们的主键或双方的唯一索引;你的WHERE子句也确保一个表返回0或1行。
因为每个JOIN都确保了多重性,所以成为唯一索引或主键很重要。具有唯一的索引或主键可确保(0,1)x(0,1)关系。
这是一个描述SQL查询的非典型图。你能否提供一些数据,理想情况下是一个小例子来证明你的问题? –