关于SQL: 左外连接和右外连接

2024-12-04 03:41:34
推荐回答(4个)
回答1:

如果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行数

回答2:

没什么区别,效果是一样的。

回答3:

结果的数量貌似是一样的。但具体到每个cell就不一样了。
过程原理上讲其实就是做笛卡尔积,产生一个巨大的表,再通过on后面的条件进行过滤。
看看这个 或许对你有帮助

http://zhidao.baidu.com/question/102609896.html?fr=ala0

回答4:

不一样
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 李四