引自: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后面。
相关推荐
当我们涉及到LEFT JOIN时,可能会遇到使用ON和WHERE子句的情况,两者虽然都可以用来指定条件,但在语义上有所区别。 首先,ON子句是在生成联接结果集(临时表)时应用的条件。无论ON条件是否为真,都会返回左表的...
### left join 过滤条件写在on后面和写在where 后面的区别 在SQL查询语句中,连接(JOIN)是一种非常重要的操作,用于从两个或多个表中获取数据。其中,`LEFT JOIN`是一种常用的连接类型,它返回左表的所有记录以及...
然而,在使用`LEFT JOIN`时,我们可以在`ON`子句和`WHERE`子句中放置条件,这两者之间存在一些关键区别。 首先,我们要理解`ON`和`WHERE`的优先级。`ON`的优先级高于`WHERE`。在执行`LEFT JOIN`时,数据库会先根据`...
当我们设置LEFT JOIN的条件时,可以在ON和WHERE子句中指定,但它们之间存在一些关键区别。 首先,理解ON子句的作用至关重要。ON子句中的条件是在连接左右两表时使用的,它定义了两个表之间的关系。在这个例子中,`...
如果在`LEFT JOIN`中同时使用`ON`和`WHERE`,需要注意的是,`WHERE`条件可能会覆盖`ON`条件的效果。在`LEFT JOIN`中,`WHERE`通常用于限制最终结果集的行,而不是影响连接本身。如果`WHERE`子句中包含`JOIN`条件,...
在LEFT JOIN中,ON和WHERE的差异在于ON的条件影响的是连接的逻辑,而WHERE的条件则是在连接后对结果集进行过滤。 接下来,让我们看看INNER JOIN。INNER JOIN只返回那些在左右两个表中都有匹配记录的行。对于SQL语句...
关于JOIN条件的放置,JOIN语句通常包含ON子句来定义连接条件,而WHERE子句用于过滤结果。当JOIN包含多个等值匹配条件时,理论上所有条件都可以写在ON子句内,这样做可以更清晰地表明连接逻辑。然而,将某些条件移到...
此外,优化JOIN操作对于提高查询性能也至关重要,比如通过使用索引、避免全表扫描和合理设计JOIN条件等方法。在PL/SQL Developer这样的开发环境中,可以方便地测试和比较不同的JOIN类型,以便更好地理解和利用它们的...
在SQL查询中,ON和WHERE子句都可以放置匹配条件,但它们的作用有所不同。ON用于指定JOIN操作的条件,而WHERE则过滤最终结果集。在JOIN操作中,最佳实践是将所有的JOIN条件写在ON子句中,而WHERE用于处理不涉及JOIN的...
- `WHERE`子句的放置位置很重要,当`WHERE`条件放在`ON`之后,它会应用于已经联接后的结果,而不是原始的表。 - 在实际应用中,应根据查询需求选择合适的连接类型,以获取最准确和最相关的结果。 通过理解内连接...
在这个案例中,问题在于过滤条件没有正确地放在外连接的ON子句中,而是被放在了主查询的WHERE子句里,这导致了查询效率降低,从而影响了网页加载速度。 正确的做法是将与外连接相关的过滤条件移到ON子句中。例如,...
ON子句用于设置连接条件,当两张表之间没有共享的列时,可以使用ON子句来定义连接条件。 ```sql SELECT * FROM emp e JOIN salgrades s ON (e.sal BETWEEN s.losal AND s.hisal); ``` #### 二、外连接 外连接是指在...
### 支付宝Java工程师笔试题解析 #### 智力部分 1. **烧绳问题** **题目:** 烧一根不均匀的绳子需要一个小时,如何利用这... 这种方式利用了索引加速连接操作,并通过`LEFT JOIN`和`WHERE`条件有效地过滤出了结果。
ON、WHERE、HAVING条件的放置顺序也有讲究,应将过滤效果最好的条件放在前面。主键相关条件应置于WHERE条件前列,然后按照=, <, >, , LIKE, IN的顺序排列。ORDER BY应根据索引字段进行,否则需要在程序中进行排序。...
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" (3) 删除数据记录: sql="delete from 数据表 where 条件表达式" sql="delete from 数据表" (将数据表所有记录删除) (4) 添加...
- 将连接条件放置在ON子句中,筛选条件放在WHERE子句中,有助于区分逻辑。 - GROUP BY和HAVING用于分组和筛选分组后的结果,常用于统计分析。 - ORDER BY用于对查询结果进行排序。 例如,查询部门员工数量超过3的...
FROM 表名1 [INNER|LEFT|RIGHT|FULL JOIN 表名2 ON 条件] [WHERE 条件];` - **示例**: 查询`employees`表与`departments`表中的相关信息。 ```sql SELECT e.first_name, e.last_name, d.department_name FROM ...