多连接场景下LEFT JOIN左表判定:左连t4时左表为哪一方?
多表LEFT JOIN疑问解答
示例SQL代码
SELECT * FROM t1 JOIN t2 ON t2.id = t1.t2_id LEFT JOIN t3 ON t3.id = t2.t3_id LEFT JOIN t4 ON t4.id = t1.t4_id
问题解答
问题1:在多连接的LEFT JOIN操作中,哪个表属于左表?
LEFT JOIN的左表是该JOIN子句之前所有表连接后生成的临时结果集,并非单一的原始表。比如示例里的LEFT JOIN t3,它的左表是t1和t2内连接后的结果;后续的LEFT JOIN t4,左表则是t1 JOIN t2 LEFT JOIN t3得到的整体临时结果。
问题2:执行LEFT JOIN t4的操作时,左表是此前所有连接的结果集,还是前一个表t3,或是因ON子句关联的t1?
执行LEFT JOIN t4时,左表是此前所有连接的结果集,也就是t1 JOIN t2 LEFT JOIN t3生成的临时表,既不是单独的t3,也不是原始的t1。ON子句里的t1.t4_id只是用来关联右表t4的字段(该字段来自临时结果集中保留的t1数据),但左表本身是前面所有连接的整体输出。
内容的提问来源于stack exchange,提问作者Hrvoje T
相关产品推荐
相关产品推荐

