如果table1 和 table2中pass字段是1对1关系,那么两条语句是没有区别的
如果table1和 table2中pass字段不是1对1的关系,就有区别了:
(1)left join 会列出所有table1的行,并关联table2与table1符合table1.pass=table2.pass的行,如果某个table1.pass在table2中不存在,结果会以null显示,连接后总行数等于table1行数
(2)right join会列出所有table2的行,并关联table1与table1符合table1.pass=table2.pass的行,如果某个table2.pass在table1中不存在,结果会以null显示,连接后总行数等于table2行数
没什么区别,效果是一样的。
结果的数量貌似是一样的。但具体到每个cell就不一样了。
过程原理上讲其实就是做笛卡尔积,产生一个巨大的表,再通过on后面的条件进行过滤。
看看这个 或许对你有帮助
http://zhidao.baidu.com/question/102609896.html?fr=ala0
不一样
table1表
id pass name
1 1 a
2 2 b
table2表
id pass realName
1 1 张三
2 3 李四
则左连接的表如下
id pass name id pass realName
1 1 a 1 1 张三
2 2 b null null null
右连接的表如下:
id pass name id pass realName
1 1 a 1 1 张三
null null null 2 3 李四