MySQL-数据库关联问题

发布于 2016-12-07 17:16:26 字数 215 浏览 1130 评论 3

看看这两句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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-05-28 20:48:08

直接left join 没有on会报错的吧!你怎么还能查出结果来了?

这是因为table2中包含了所有的table1中id相等的数据
例如
table1

id

1

table2
id
1
1
2

这样如果用table1做主表那么这两种查询的结果就会一致,如果是用table2做主表那么左链接查询的结果将会比第一种的值多。希望对你有帮助。

第一种相当于INNER JOIN。

偏爱自由 2017-04-09 21:07:22

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 。

浮生未歇 2017-01-16 23:57:03

你写的这两种语句功能是相同的,我觉得在多表中用join效率会更高些。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文