`

Mysql Left Join Where On

 
阅读更多
select t1.id,t2.id
from t1
left join t2 on t1.id = t2.id and t1.id>1 and t2.id<>3

在mysql的left join中条件放在on后面和在where后面是不同的;

1. on后面只针对于t2表进行过滤,所以上面的t1.id>1将不起作用,切记,切记;

2. where后面会对最终结果产生影响,所以如果t2.id<>3放到on后面和where后面也是会返回不同的结果;


  例如下面脚本一会比脚本二多返回一些数据。

select * from test2
left join test1 on test2.id = test1.id and test1.id<>3
where test2.id <>6;
select * from test2
left join test1 on test2.id = test1.id
where test2.id <>6 and test1.id<>3;
分享到:
评论

相关推荐

    MySQL left join操作中on和where放置条件的区别介绍

    总结一下,`ON` 和 `WHERE` 在 `LEFT JOIN` 中的主要区别在于: 1. `ON` 用于在生成临时表时定义连接条件,无论条件是否满足,都会返回左表的所有行。 2. `WHERE` 在临时表生成后进行过滤,如果它包含了连接条件,...

    解析mysql left( right ) join使用on与where筛选的差异

    MySQL中的LEFT JOIN和RIGHT JOIN是进行表连接查询的两种常见方式,它们用于在两个表之间根据一定的条件进行数据匹配。LEFT JOIN称为左连接,它会返回左表(即第一个表)的所有记录,以及右表(即第二个表)匹配的...

    深入理解mysql之left join 使用详解

    ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行。 如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 NULL 的数据 在匹配阶段 WHERE 子句的条件都不会被使用...

    mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录

    SELECT COUNT(*) FROM A LEFT JOIN B ON A.a = B.a WHERE B.a IS NULL ``` 3. `NOT EXISTS` 语句: ```sql SELECT COUNT(*) FROM A WHERE NOT EXISTS (SELECT a FROM B WHERE A.a = B.a) ``` 虽然这三条语句在逻辑...

    sql中的left join及on、where条件关键字的区别详解

    LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。 LEFT JOIN 关键字语法 SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1....

    Mysql之innerjoin,leftjoin,rightjoin详解.pdf

    Mysql 之 inner join、left join、right join 详解 Mysql 中的连接查询是指从多个表中检索数据,并将它们组合成一个结果集。inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner ...

    mysql多个left join连接查询用法分析

    MySQL中的LEFT JOIN是一种关联多个表的方法,用于返回左表的所有记录以及右表匹配的记录。在某些场景下,我们可能需要连接多个表来获取全面的数据信息。本篇文章将深入探讨MySQL多个LEFT JOIN连接查询的用法,通过...

    mysql Join使用以及优化

    1. 避免在where条件中使用函数或者表达式,这会阻止MySQL利用索引。 2. 确保Join操作中的连接字段有相同类型的数据。 3. 使用EXPLAIN语句来查看查询的执行计划,这可以帮助识别性能瓶颈并优化查询。 4. 考虑适当分批...

    MySQL的LEFT JOIN表连接的进阶学习教程

    MySQL的LEFT JOIN是一种关联查询操作,它用于合并两个或多个表的数据,并且返回所有左表(也就是在JOIN语句中位于LEFT关键字之后的表)的记录,即使在右表中没有匹配的记录。这个概念是数据库关系查询中的关键部分,...

    mysql中left join设置条件在on与where时的用法区别分析

    当我们设置LEFT JOIN的条件时,可以在ON和WHERE子句中指定,但它们之间存在一些关键区别。 首先,理解ON子句的作用至关重要。ON子句中的条件是在连接左右两表时使用的,它定义了两个表之间的关系。在这个例子中,`...

    MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程

    LEFT JOIN,也称为左连接,它的基本语法是:`FROM table1 LEFT JOIN table2 ON condition...`。这种连接方式会返回左表(table1)的所有记录,即使在右表(table2)中没有找到匹配的记录。对于那些在右表中找不到...

    mysql_adv_select.rar_any left join_union

    结合使用`LEFT JOIN`和`UNION ALL`,我们可以构造一个复杂的查询,首先使用`LEFT JOIN`从文章表中获取数据,并关联到分类表以获取对应的分类名称,然后通过`UNION ALL`将不同条件下的查询结果整合在一起。...

    SQL语句优化之JOIN和LEFT JOIN 和 RIGHT JOIN语句的优化

    例如,如果LEFT JOIN后的WHERE子句限制了JOIN条件,使得所有生成的NULL行都不满足,那么可以将LEFT JOIN简化为INNER JOIN。 嵌套循环JOIN算法: 嵌套循环JOIN是最基础的JOIN算法,它依次遍历每个表,找到匹配的行。...

    mysql join所有方法总结

    在MySQL中,主要的Join方法包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN、SELF JOIN以及CROSS JOIN等。 INNER JOIN(内连接):是所有Join中最常见的类型。使用INNER JOIN后,只有两个表中能够相互匹配的记录...

    解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题

    然而,在Laravel的Eloquent ORM中,如果直接使用`leftJoin`和`where`方法,会导致行为与原生SQL不一致,因为`where`方法实际上会应用一个内部的INNER JOIN逻辑,从而丢失了左连接的意义。正确的写法应该是将筛选条件...

Global site tag (gtag.js) - Google Analytics