MySQL-数据库关联问题
看看这两句sql有什么区别?
select a,b from table1,table2 where table1.id=table2.uid
和
select a,b from table1 left join table2 where table1.id=table2.uid
他们查询出来的数据是一样的,一个没用left join,一个用了,什么区别?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
直接left join 没有on会报错的吧!你怎么还能查出结果来了?
这是因为table2中包含了所有的table1中id相等的数据
例如
table1
id
1
table2
id
1
1
2
这样如果用table1做主表那么这两种查询的结果就会一致,如果是用table2做主表那么左链接查询的结果将会比第一种的值多。希望对你有帮助。
第一种相当于INNER JOIN。
mysql里的联合查询有两类方式,一种使用join ,left join,right join等,第二种,使用 where。在我目前的知识中,我认为,select a,b from table1,table2 where table1.id=table2.uid,相当于使用了join,等值连接。select a,b from table1 left join table2 where table1.id=table2.uid 使用的是左连接。
你查询的数据一样,那么这个和你创建的表有很大的关系。估计你的表非单满射。
还有可能,和select a,b from table1 left join table2 where table1.id=table2.uid 有关系,left join 没有使用到on 。
你写的这两种语句功能是相同的,我觉得在多表中用join效率会更高些。