如果我有查询:
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 之间执行交叉连接?
最佳答案
因为它是一个永远为真的条件,所以它等价于:
SELECT * FROM Table1 a
Inner Join Table2 b on a.Key=b.Key
Inner Join Table3 c on 1=1
;
,例如 (t1 join t2) * t3 的笛卡尔积。
关于sql - 未使用自己的键连接表时的连接行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13847820/