请教老师个关于left join 和inner join的问题

来源:8-9 【实战】SQL改写优化

荔枝仔

2020-01-08

A,B,C三个表。如果一个查询是
select XX from A
left join B on A.id=B.id
left join C on B.id=C.id
和另外一种
select XX from A
left join (select B.id,XX from B join C on B.id=C.id ) abc
on A.id = B.id
得到的查询结果一样(在navicat),但是用python mysql-client报错Warning: 1292, "Truncated incorrect DOUBLE value:
想请教下老师这2种sql写法的差别

写回答

1回答

sqlercn

2020-01-08

看一下这两个SQL的执行计划就知道差别了,第二种是先做B和C 表的内关联,并生成一个临时表然后再和A表进行关系。第一种先是A表和B表关联生成临时表后再和C表关联。第二种报错的原因应该是你在关联A表和子查询时用错了临时表的别名。

0
2
荔枝仔
是第一种写法报错
2020-01-09
共2条回复

零基础入门 详解企业主流数据库MySQL8.0

掌握SQL优化与慢查询优化,具备独当一面的能力

1641 学习 · 485 问题

查看课程