3

如果我有查询:

SELECT * 
FROM Table1 a
Inner Join Table2 b on a.Key = b.Key
Inner Join Table3 c on a.Key = b.Key

怎么了?我最近在一些代码中犯了这个错误(想要加入 c on on a.Key = c.Key),当我发现并修复它时,我很惊讶它被允许执行并得到结果。

我很好奇调用这样的查询时会发生什么。据我所知,它在 (table1 join table2) 和 table3 之间执行交叉连接?

4

1 回答 1

4

由于它是一个始终为真的条件,它等价于:

 SELECT * FROM Table1 a 
 Inner Join Table2 b on a.Key=b.Key
 Inner Join Table3 c on 1=1
   ;

,例如 (t1 join t2) * t3 的笛卡尔积。

于 2012-12-12T20:29:08.507 回答