`

Mysql 中LEFT中on与where 过滤条件差异

 
阅读更多
语句1:
	SELECT a.id, b.id FROM a LEFT JOIN b
    ON a.id = b.id AND a.id = 1 AND b.id = 1

语句2:
	SELECT a.id, b.id FROM a LEFT JOIN b
    ON a.id = b.id where a.id = 1 AND b.id = 1


在mysql的left join中条件放在on后面和在where后面是不同的。
语句1和语句2 就是明显的列子:其中语句1中的b.id是过滤b表的信息,a.id对a表过滤无效;
语句2中b.id和a.id都生效,即where条件实在left on生效后才产生的生效条件
分享到:
评论

相关推荐

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

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

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

    如果`WHERE` 子句包含的条件与`LEFT JOIN`的连接条件相同,但放在`WHERE`里,那么这个条件将在临时表生成后才被检查,这可能导致左表的某些行因不满足`WHERE`条件而被过滤掉,失去了`LEFT JOIN`应有的效果。...

    MySQL查询条件中放置on和where的区别分析

    在MySQL查询中,`ON` 和 `WHERE` 都是用来设置查询条件的,但它们在不同的语句结构中起着不同的作用。理解这两者之间的差异对于编写高效的SQL查询至关重要。 首先,`ON` 关键字主要用于`JOIN`操作,如`INNER JOIN`,...

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

    在 LEFT JOIN 中,WHERE 子句不会影响左表的记录数,但可以过滤掉右表中不满足条件的匹配记录。 2. **WHERE ... IS NULL 子句**: 在某些复杂的查询中,我们可能希望找出左表中有,但右表中没有对应记录的情况。...

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

    MySQL中的表连接是数据库操作中的核心概念,尤其在处理多表关联的数据时显得尤为重要。本文将深入探讨LEFT JOIN和RIGHT JOIN两种特殊的连接方式,帮助初学者理解这两种连接的语法、用法及其在实际操作中的应用。 ...

    MySQL优化技巧大全.pdf

    ON语句用于过滤连接表的记录,而WHERE语句用于过滤最终结果,例如: ```sql SELECT A.id, A.name, B.id, B.name FROM A LEFT JOIN B ON A.id = B.id WHERE A.name = 'test'; ``` MySQL优化技巧大全.pdf提供了...

    Join on 连接

    在本篇内容中,我们将深入探讨`JOIN`的不同类型,包括`INNER JOIN`、`LEFT JOIN`、`RIGHT JOIN`以及`FULL OUTER JOIN`,并理解它们在实际应用中的差异和作用。 1. **INNER JOIN**(内连接): 内连接只返回两个表...

    mysql数据查询操作-实验训练2.docx

    * 了解如何使用 WHERE 子句指定查询条件 * 了解如何使用 DISTINCT 关键字去重复记录 2. 多条件查询: * 了解如何使用 AND 和 OR 运算符指定多个查询条件 * 了解如何使用 IN 运算符指定多个值 * 了解如何使用 ...

    常用mysql语句实例

    SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM table_a a LEFT OUTER JOIN table_b b ON a.a = b.c; ``` #### 知识点说明: 该语句执行左外连接操作,即返回所有`table_a`中的记录以及与之匹配的`table_b`中的记录。...

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

    MySQL中的`NOT IN`, `LEFT JOIN`, `IS NULL`, 和 `NOT EXISTS` 是四种常见的用于在数据查询中排除特定记录的语法。它们在特定场景下可能会有不同的效率表现,尤其是在处理大量数据时。以下是对这些语句的详细分析: ...

    mysql学习笔记+基础部分+附带图片

    - **表**:在 MySQL 中,数据以表的形式存储,表由行和列组成,每个表对应一个或多个物理文件。 #### 二、创建数据库与字符集设置 1. **CHARACTER SET**:用于指定数据库使用的字符集。例如: ```sql CREATE ...

    2021春招MySQL高频面试题.pdf

    - **外连接**(OUTER JOIN):包括左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN),返回一个表中所有行与另一个表中的匹配行。 - **交叉连接**(CROSS JOIN):也称为笛卡尔积,返回两个表中所有可能的...

    有关mysql中sql的执行顺序的小问题

    3. **ON** - `ON`关键字定义了JOIN的条件,它在`WHERE`子句之前执行,用于决定哪些行将被连接在一起。 4. **WHERE** - 这一步用来过滤记录,只保留满足指定条件的行。`WHERE`子句通常用于对来自`FROM`和`JOIN`操作...

    SQL-SELECT语句的通用例子源码

    10. **使用WHERE与HAVING的差异**: - `WHERE`过滤行,而`HAVING`过滤`GROUP BY`后的结果集。 以上只是`SELECT`语句的部分示例,实际应用中还有更复杂的查询结构,如`UNION`(合并结果集)、`INTERSECT`(取交集)...

    经典SQL语句学习总结

    在SQL(Structured ...同时,了解不同数据库管理系统(如MySQL、Oracle、SQL Server等)之间的差异也很有帮助,因为它们可能对SQL语法有各自的扩展和实现方式。总之,掌握经典SQL语句是提升数据处理能力的重要一步。

    软件学习 LabSQL

    理解`INNER JOIN`、`LEFT JOIN`、`RIGHT JOIN`和`FULL OUTER JOIN`的区别,并熟练运用`ON`和`USING`关键字来指定连接条件。 4. 子查询:子查询可以在主查询中嵌套,用于获取满足特定条件的数据集。它们可以作为`...

    sql语句大全.docx

    - `SHOW COLUMNS`在某些数据库系统中可能有差异。 **5. 修改表结构** - **添加列** ```sql ALTER TABLE 表名 ADD 列名 数据类型 [约束]; ``` - **删除列** ```sql ALTER TABLE 表名 DROP COLUMN 列名; ``` - ...

Global site tag (gtag.js) - Google Analytics