连接查询相关

zarte 2015-08-26 04:21:58
SELECT * FROM a left join b ON a.bid = b.id LEFT JOIN c ON a.cid=c.id
SELECT * FROM (SELECT * FROM a left joint b ON a.bid = b.id) as t
LEFT JOIN c ON t.cid=c.id
这两个结果不一样吗?
...全文
93 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rick-he 2015-08-27
  • 打赏
  • 举报
回复
引用 6 楼 zy205817 的回复:
结果是一样的 第二个子查询当做了临时表查询
赞成
码无边 2015-08-27
  • 打赏
  • 举报
回复
结果是一样的 第二个子查询当做了临时表查询
Rotel-刘志东 2015-08-26
  • 打赏
  • 举报
回复
一样的。第二句用了子查询。
侯爵123 2015-08-26
  • 打赏
  • 举报
回复
第一个查a表,第二个查a与b关联之后的
卖水果的net 2015-08-26
  • 打赏
  • 举报
回复
感觉第二个语句,是动态拼接出来的语句,通过各种逻辑生成的 t , 又用t 关联的c 。
LongRui888 2015-08-26
  • 打赏
  • 举报
回复
另外,你也可以显示一下2个语句的执行计划: explain SELECT * FROM a left join b ON a.bid = b.id LEFT JOIN c ON a.cid=c.id; explain SELECT * FROM (SELECT * FROM a left joint b ON a.bid = b.id) as t LEFT JOIN c ON t.cid=c.id;
LongRui888 2015-08-26
  • 打赏
  • 举报
回复
第一个语句是a关联b,产生结果集后 ,然后再用a的cid 再关联c。 而第二个语句是用了一个括号,把a关联b的代码括起来了,然后再关联c。 本质上2个语句是一样的。

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧