mysql-数据库-使用join关联多个表条件放在on后与放在where后有什么区别
在MySQL数据库中,使用join关联多个表时,将条件放在on后与放在where后有以下区别:
-
where 子句过滤的是结果集,而 on 子句过滤的是 join 过程中的记录,所以放在 on 后可以减少不必要的查询,提高查询效率。
-
如果条件放在 where 子句中,会先生成笛卡尔积,然后再进行条件过滤,这样会导致性能问题和结果不准确的问题。
-
如果条件放在 on 子句中,join过程中只会保留符合条件的记录,不会产生笛卡尔积和冗余数据,从而提高查询效率和准确性。
-
当使用左连接或右连接时,如果将条件放在 on 子句中,会保留左表或右表中的所有记录,即使没有匹配的记录,而如果将条件放在 where 子句中,则会忽略左表或右表中没有匹配的记录。
总之,将条件放在 on 子句中更能体现出 join 的优势,提高查询效率和准确性,而将条件放在 where 子句中则可能会导致性能问题和结果不准确的问题。
原文地址: https://www.cveoy.top/t/topic/mJB 著作权归作者所有。请勿转载和采集!