如果我有查询:
SELECT *
FROM Table1 a
Inner Join Table2 b on a.Key = b.Key
Inner Join Table3 c on a.Key = b.Key
发生了什么事?我最近在一些代码中犯了这个错误(希望在a.Key = c.Key
上加入c),当我发现并修复它时,我很惊讶它被允许执行并获得结果。
我很好奇在调用这样的查询时会发生什么。据我所知,它执行(table1 join table2)和table3?
之间的交叉连接答案 0 :(得分: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的笛卡尔积。