`

on与where的区别

    博客分类:
  • sql
阅读更多
select b.town_id ,a.school_name from school a left join town b on (a.town_id = b.town_id); --416
select b.town_id ,a.school_name from school a left join town b on (a.town_id = 110108 and a.town_id = b.town_id); --416
select b.town_id ,a.school_name from school a left join town b on (b.town_id = 110108 and a.town_id = b.town_id); --416
select b.town_id ,a.school_name from school a right join town b on (a.town_id = b.town_id); --416
select b.town_id ,a.school_name from school a right join town b on (a.town_id = 110108 and a.town_id = b.town_id); --91
select b.town_id ,a.school_name from school a right join town b on (b.town_id = 110108 and a.town_id = b.town_id); --91

1、join中on与where
join取得是内连接条件写在on和where后边的结果是一样的。写在on后边是在进行表关联之前过滤数据然后进行关联生成临时表,这样关联的数据量可能少一些,可能会快一些,尤其是表的数据量比较大的时候会明显一些;写在where后边是两张表先进行关联在生成临时表在临时表的基础上进行where条件过滤筛选。
2、left、right中on与where
left、right就是进行左或右连接,无论on后边的条件是否为真都会返回left或right表中的全部数据。
on负责两张表关联时进行数据过滤,但是会返回left或right表中的全部记录(无论是否匹配上)
where负责对生成的临时表进行过滤
以上就是对left、right、join后on与where的理解。水平有限,如果理解的不对望指导。
分享到:
评论

相关推荐

    left_join_on_and与left_join_on_where的区别

    left_join_on_and与left_join_on_where的区别

    sql语句join中on和where的区别

    为了更好地说明`ON`与`WHERE`的区别,我们首先定义两个表:`T_INFO_ASSET_TYPE_DETIAL`和`T_INFO_ASSETS_GROUP`。 1. **创建资产类型表**: ```sql CREATE TABLE T_INFO_ASSET_TYPE_DETIAL ( ASSETS_TYPE_CODE ...

    SQL中on条件与where条件的区别

    SQL中on条件与where条件的区别基础知识

    sql查询左连接on与where的区别(2).pdf

    总结一下,Left Join中on与where的关键区别在于: 1. on的执行顺序在join之前,它决定了哪些记录会参与连接操作。 2. where的执行顺序在join之后,它决定了哪些记录会被最终展示在结果集中。 3. on用于指定连接条件...

    on与where、group by的用法

    ### SQL中ON条件与WHERE条件的区别 在进行数据库操作时,理解`ON`与`WHERE`条件的区别至关重要,尤其是在处理表连接(如`LEFT JOIN`、`INNER JOIN`等)时更为关键。这两种条件虽然都能用于限制结果集,但它们在执行...

    深入Oracle的left join中on和where的区别详解

    当我们涉及到LEFT JOIN时,可能会遇到使用ON和WHERE子句的情况,两者虽然都可以用来指定条件,但在语义上有所区别。 首先,ON子句是在生成联接结果集(临时表)时应用的条件。无论ON条件是否为真,都会返回左表的...

    深入解析on where谓词的区别

    这篇博文“深入解析on where谓词的区别”旨在帮助我们理解这两个关键字在联接(JOIN)操作和简单查询中的不同作用。 首先,让我们来看看`WHERE`子句。在SQL中,`WHERE`主要用于基本的单表查询,它在`SELECT`语句...

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

    因此,使用WHERE子句可能会导致得到与在ON子句中直接指定连接条件不同的结果集。 根据这两个不同的查询语句的使用方式,我们可以得出结论: 1. ON子句用于定义连接条件,适用于指定两个表之间的连接规则。 2. ...

    SQL _join on 和where的执行顺序1

    总结,ON和WHERE子句在JOIN操作中的作用不同:ON定义了表间连接的基础,而WHERE则对最终结果进行过滤。对于LEFT JOIN、RIGHT JOIN和FULL JOIN,ON条件的过滤是在生成中间表时进行的,而WHERE是在中间表生成后应用。...

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

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

    SQL中过滤条件放on和where中的区别详解

    在SQL查询中,`ON` 和 `WHERE` 都用于设置过滤条件,但它们在不同类型的查询中扮演的角色和产生的效果是有区别的。本篇文章将深入探讨`ON`和`WHERE`在`JOIN`操作中的具体差异,并通过实例来帮助理解。 首先,`JOIN`...

    解析sql语句中left_join、inner_join中的on与where的区别

    这意味着在LEFT JOIN中,WHERE子句的条件会减少最终结果中的行数,而在INNER JOIN中,WHERE子句的条件与ON子句的效果相同,因为它们都在连接时应用。 在性能方面,虽然SQL语句6和7的逻辑效果相同,但它们的执行计划...

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

    现在,让我们来探讨`LEFT JOIN`与`WHERE`关键字的区别。`WHERE`子句通常用于在单个表格中过滤记录,而不是连接多个表格。在JOIN操作中,`WHERE`子句通常用于在连接后进一步限制结果集,它作用于整个结果集,而不仅仅...

    left join 过滤条件写在on后面和写在where 后面的区别

    本文将重点讨论`LEFT JOIN`中过滤条件放置位置的不同——放在`ON`子句后与放在`WHERE`子句后——及其带来的差异。 #### SQL JOIN基本概念回顾 在深入讨论之前,我们先简要回顾一下SQL JOIN的基本概念: - **INNER...

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

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

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

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

    sqlserver的存储过程与 where in 多值参数

    本文将探讨在SQL Server中,存储过程与`WHERE IN`子句结合使用时,处理多值参数的几种方法。 **方法一:拼接SQL字符串并调用`EXEC`** 这是最简单也是最直观的方法。你可以在存储过程中接收一个包含多个值的参数,...

Global site tag (gtag.js) - Google Analytics