Mysql 表的左连接部分
我正在尝试使用left join连接两个表,即Mysql 表的左连接部分,mysql,sql,left-join,Mysql,Sql,Left Join,我正在尝试使用left join连接两个表,即table1 left join table2。 我只想将A中的部分行与B连接起来。建议我使用子查询来筛选表1中的行,还是在where子句中避免这些行以提高查询性能 select t1.a ,t1.b ,t2.c from (select * from table1 where a='x' ) t1 LEFT JOIN table2 t2 on t1.d=t2.d 或 检查查询计划,但我怀疑它会
table1 left join table2
。
我只想将A中的部分行与B连接起来。建议我使用子查询来筛选表1中的行,还是在where子句中避免这些行以提高查询性能
select t1.a
,t1.b
,t2.c
from (select *
from table1
where a='x'
) t1 LEFT JOIN table2 t2 on t1.d=t2.d
或
检查查询计划,但我怀疑它会有什么不同。这取决于数据库的结构和内容。最好的方法是查看查询计划,并对两个版本的查询进行比较
您可以发现此文档很有用:它们的实现可能是相同的。在这两个查询中使用
EXPLAIN
时,您是否看到任何差异?只需使用EXPLAIN-see-将告诉您语句是如何执行的尝试使用EXPLAIN查看差异。但是我认为第二种语法是最好的选择,因为它是直接的,并且不必在主查询之前先进行内部查询。我认为第二种语法更常见,因为它不太冗长。
select t1.a
,t1.b
,t2.c
from table1 t1 LEFT JOIN table2 t2 on t1.d=t2.d
where t1.a='x'