`

left join on 和where条件的放置

 
阅读更多

引自:http://blog.csdn.net/muxiaoshan/article/details/7617533

 

select * from

td
  left join (
select case_id as sup_case_id , count(*) supervise_number from 
 td_kcdc_case_sup_info 
 group by  case_id
  ) sup
 on  
   sup.sup_case_id = td.case_id
 where 1=1   /*不能去掉, 否则认为and 后的条件为 联合查询时的条件, 不能起过滤作用,由于left join因此td表中记录将全部查出来*/

 and td.con = 'xxxx'             

 

总结:

1. 对于left join,不管on后面跟什么条件,左表的数据全部查出来,因此要想过滤需把条件放到where后面

2. 对于inner join,满足on后面的条件表的数据才能查出,可以起到过滤作用。也可以把条件放到where后面。

分享到:
评论

相关推荐

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

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

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

    ### left join 过滤条件写在on后面和写在where 后面的区别 在SQL查询语句中,连接(JOIN)是一种非常重要的操作,用于从两个或多个表中获取数据。其中,`LEFT JOIN`是一种常用的连接类型,它返回左表的所有记录以及...

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

    然而,在使用`LEFT JOIN`时,我们可以在`ON`子句和`WHERE`子句中放置条件,这两者之间存在一些关键区别。 首先,我们要理解`ON`和`WHERE`的优先级。`ON`的优先级高于`WHERE`。在执行`LEFT JOIN`时,数据库会先根据`...

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

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

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

    如果在`LEFT JOIN`中同时使用`ON`和`WHERE`,需要注意的是,`WHERE`条件可能会覆盖`ON`条件的效果。在`LEFT JOIN`中,`WHERE`通常用于限制最终结果集的行,而不是影响连接本身。如果`WHERE`子句中包含`JOIN`条件,...

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

    在LEFT JOIN中,ON和WHERE的差异在于ON的条件影响的是连接的逻辑,而WHERE的条件则是在连接后对结果集进行过滤。 接下来,让我们看看INNER JOIN。INNER JOIN只返回那些在左右两个表中都有匹配记录的行。对于SQL语句...

    44.答疑文章(三):说一说这些好问题1

    关于JOIN条件的放置,JOIN语句通常包含ON子句来定义连接条件,而WHERE子句用于过滤结果。当JOIN包含多个等值匹配条件时,理论上所有条件都可以写在ON子句内,这样做可以更清晰地表明连接逻辑。然而,将某些条件移到...

    PL/SQL Join实例分析

    此外,优化JOIN操作对于提高查询性能也至关重要,比如通过使用索引、避免全表扫描和合理设计JOIN条件等方法。在PL/SQL Developer这样的开发环境中,可以方便地测试和比较不同的JOIN类型,以便更好地理解和利用它们的...

    Mysql join联表及id自增实例解析

    在SQL查询中,ON和WHERE子句都可以放置匹配条件,但它们的作用有所不同。ON用于指定JOIN操作的条件,而WHERE则过滤最终结果集。在JOIN操作中,最佳实践是将所有的JOIN条件写在ON子句中,而WHERE用于处理不涉及JOIN的...

    SQL内连接与外连接.pdf

    - `WHERE`子句的放置位置很重要,当`WHERE`条件放在`ON`之后,它会应用于已经联接后的结果,而不是原始的表。 - 在实际应用中,应根据查询需求选择合适的连接类型,以获取最准确和最相关的结果。 通过理解内连接...

    SQL有外连接的时候注意过滤条件位置否则会导致网页慢

    在这个案例中,问题在于过滤条件没有正确地放在外连接的ON子句中,而是被放在了主查询的WHERE子句里,这导致了查询效率降低,从而影响了网页加载速度。 正确的做法是将与外连接相关的过滤条件移到ON子句中。例如,...

    视频教程读书笔记之oracle从入门到精通

    ON子句用于设置连接条件,当两张表之间没有共享的列时,可以使用ON子句来定义连接条件。 ```sql SELECT * FROM emp e JOIN salgrades s ON (e.sal BETWEEN s.losal AND s.hisal); ``` #### 二、外连接 外连接是指在...

    支付宝Java工程师笔试题

    ### 支付宝Java工程师笔试题解析 #### 智力部分 1. **烧绳问题** **题目:** 烧一根不均匀的绳子需要一个小时,如何利用这... 这种方式利用了索引加速连接操作,并通过`LEFT JOIN`和`WHERE`条件有效地过滤出了结果。

    Abap效率.docx

    ON、WHERE、HAVING条件的放置顺序也有讲究,应将过滤效果最好的条件放在前面。主键相关条件应置于WHERE条件前列,然后按照=, <, >, , LIKE, IN的顺序排列。ORDER BY应根据索引字段进行,否则需要在程序中进行排序。...

    SQL语法大全

    sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" (3) 删除数据记录: sql="delete from 数据表 where 条件表达式" sql="delete from 数据表" (将数据表所有记录删除) (4) 添加...

    T-SQL语法大全

    - 外联接(OUTER JOIN):分为左外联接(LEFT OUTER JOIN)、右外联接(RIGHT OUTER JOIN)和全外联接(FULL OUTER JOIN),分别返回左侧表、右侧表以及两个表的所有行。 - 交叉联接(CROSS JOIN):返回两个表的笛卡尔积。 ...

    MySQL多表查询详解下

    - 将连接条件放置在ON子句中,筛选条件放在WHERE子句中,有助于区分逻辑。 - GROUP BY和HAVING用于分组和筛选分组后的结果,常用于统计分析。 - ORDER BY用于对查询结果进行排序。 例如,查询部门员工数量超过3的...

    oracle学习文档

    FROM 表名1 [INNER|LEFT|RIGHT|FULL JOIN 表名2 ON 条件] [WHERE 条件];` - **示例**: 查询`employees`表与`departments`表中的相关信息。 ```sql SELECT e.first_name, e.last_name, d.department_name FROM ...

Global site tag (gtag.js) - Google Analytics