有两个表:客户和订单。客户可以有一个或多个订单。我想了解执行速度方面的差异。任何想法都会对我更好地理解它有用。所以,提前感谢所有回答的人。
1)
SELECT `customers`.* FROM `customers`
LEFT JOIN `orders` ON `orders`.`customer_id` = `customers`.`id`
WHERE `orders`.`status` = 1
2)
SELECT `customers`.* FROM `customers`
LEFT JOIN `orders` ON `orders`.`customer_id` = `customers`.`id` AND `orders`.`status` = 1
最佳答案
第一个将充当 INNER JOIN
。当您在 where
子句中过滤右表时,右表中不匹配的 NULL
记录将被过滤,因为 anything
= NULL
会失败
第二个将用作 LEFT JOIN
。在连接条件中 AND orders.status = 1
表示要与左表连接的记录
关于性能问题,正如我上面提到的,两个查询都不相同,因此您无法真正比较性能
关于mysql - 这两个 left join sql 查询有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42041749/