这两种表连接有什么区别?
Select *
From 表1,表2,表3
Where 表1.字段=表2.字段
And 表2.字段=表3.字段
和普通的left jion表有什么区别
前者返回根据where条件都能关联到的数据。
后者是返回左边表里所有记录,右边表里根据on条件能关联到就关联,关联不到就空着。
当你使用表1.字段=表2.字段 AND 表2.字段=表3.字段这种方式连接3张表时,实际上是建立了两个连接(表1与表2,表2与表3)。
这种连接方式又称为连锁连接(Chained joins),也就是依次连接多个表。
而普通的left join连接方式则是将多张表一次性连接,找出两个表中相同的字段,然后将它们以行的形式合并在一起。
下面是这两种连接方式的代码实现。
连锁连接方式:
SELECT *
FROM table1
JOIN table2 ON table1.field = table2.field
JOIN table3 ON table2.field = table3.field;
left join连接方式:
SELECT *
FROM table1
LEFT JOIN table2 ON table1.field = table2.field
LEFT JOIN table3 ON table2.field = table3.field;
当然,用哪种连接方式最终要根据具体的需求和数据情况来决定。在某些情境下,连锁连接方式可能比传统的left join效率更高,但在其他场合下则不尽然了。
第一种你所查询出的数据是根据 表3已知参数等于表2已知参数 和(and) 表2已知参数等于表1已知参数 最终显示出表1所有符合要求的数据,第二种左连接是可以显示出表1+表2+表3的所有符合要求的数据 最终以表1为主表,如果表1关联不到2和3表 那么2和3表的参数就为null