a表
left join
b表
时必定连接一张表
(a表永远保留
,操作的全是b表)
(1)如果on条件作用在b表字段上,则不符合条件的时候,当前b表所有的内容都清空
(2)如果加on条件作用在a表字段上,则不符合条件的时候,清空当前b表的所有记录
(3)where条件是作用在连接后的复合表的记录(a、b表当成一个整体),不符合条件,直接删除这条组合记录
table : STUDENT(id, name); CLASS(id, class):
id name id class
1 "张三" 1 no.1
2 “李四” 2 no.2
3 “王五” 3 no.2
4 "赵六"
Sql语句1: SELECT a.id, a.name, b.class FROM STUDENT AS s LEFT JOIN CLASS AS c ON s.id=c.id AND s.name="张三";
id name class
1 "张三" no.1
2 “李四” (不符合条件清空)
3 “王五” (不符合条件清空)
4 "赵六" (不符合条件清空)
Sql语句2: SELECT a.id, a.name, b.class FROM STUDENT AS s LEFT JOIN CLASS AS c ON s.id=c.id AND c.class="no.2";
id name class
1 "张三" (不符合条件清空)
2 “李四” no.2
3 “王五” no.2
4 "赵六" (不符合条件清空)
Sql语句3: SELECT a.id, a.name, b.class FROM STUDENT AS s LEFT JOIN CLASS AS c ON s.id=c.id WHERE s.name="张三";
id name class
1 "张三" no.1
(不符合条件清空)
(不符合条件清空)
(不符合条件清空)
Sql语句4: SELECT a.id, a.name, b.class FROM STUDENT AS s LEFT JOIN CLASS AS c ON s.id=c.id WHERE c.class="no.2";
id name class
(不符合条件清空)
2 “李四” no.2
3 “王五” no.2
(不符合条件清空)
******************************************************
inner join 只有符合条件的数据才显示 ON 和WHERE 作用相同
Sql语句5: SELECT a.id, a.name, b.class FROM STUDENT AS s INNER JOIN CLASS AS c ON s.id=c.id AND s.name="张三";
id name class
1 "张三" no.1
(不符合条件清空)
(不符合条件清空)
(不符合条件清空)
Sql语句6: SELECT a.id, a.name, b.class FROM STUDENT AS s
INNER
JOIN CLASS AS c ON s.id=c.id AND c.class="no.2";
id name class
(不符合条件清空)
2 “李四” no.2
3 “王五” no.2
(不符合条件清空)
Sql语句7: SELECT a.id, a.name, b.class FROM STUDENT AS s
INNER
JOIN CLASS AS c ON s.id=c.id WHERE s.name="张三";
id name class
1 "张三" no.1
(不符合条件清空)
(不符合条件清空)
(不符合条件清空)
Sql语句8: SELECT a.id, a.name, b.class FROM STUDENT AS s
INNER
JOIN CLASS AS c ON s.id=c.id WHERE c.class="no.2";
id name class
(不符合条件清空)
2 “李四” no.2
3 “王五” no.2
(不符合条件清空)
分享到:
相关推荐
6. ON与WHERE的区别:在JOIN操作中,ON子句用于指定连接条件,而WHERE子句用于过滤结果集。ON子句的条件应用于确定哪些记录应该组合在一起,而WHERE子句的条件则应用于已经组合后的结果集。换句话说,ON是在连接之前...
SELECT * FROM t_institution i LEFT OUTER JOIN t_teller t ON i.inst_no = t.inst_no WHERE i.inst_no = "5801" 右外连接(Right Outer Join) 右外连接是将右边表的全部行与左边表中的匹配行连接起来,例如: ...
### left join 过滤条件写在on后面和写在where 后面的区别 在SQL查询语句中,连接(JOIN)是一种非常重要的操作,用于从两个或多个表中获取数据。其中,`LEFT JOIN`是一种常用的连接类型,它返回左表的所有记录以及...
### SQL语句JOIN中ON和WHERE的区别 #### 引言 在SQL中,JOIN操作用于合并两个或多个表中的行。正确理解`ON`和`WHERE`子句的区别对于高效地编写查询至关重要。本文将详细解释这两者的不同,并通过具体的例子来加深...
当我们涉及到LEFT JOIN时,可能会遇到使用ON和WHERE子句的情况,两者虽然都可以用来指定条件,但在语义上有所区别。 首先,ON子句是在生成联接结果集(临时表)时应用的条件。无论ON条件是否为真,都会返回左表的...
- 其次,由于 t2 已经与 t3 关联,所以 `t1 LEFT JOIN t2` 可以保持不变,但 t2 与 t3 的 Inner Join 结果可以与 t1 再次进行 Inner Join。 通过这样的优化,查询可以变得更加高效,减少对无效数据的处理。 3. ...
Mysql 之 inner join、left join、right join 详解 Mysql 中的连接查询是指从多个表中检索数据,并将它们组合成一个结果集。inner join、left join 和 right join 是 Mysql 中三种最常用的连接查询方式。 inner ...
标题与描述中的“from多张表等于left join其他表”主要涉及的是SQL查询语句中两种不同的连接方式:内连接(通常在FROM子句后直接使用WHERE子句实现)和左连接(LEFT JOIN)。这两种连接方式在处理多表查询时有着不同...
总结,ON和WHERE子句在JOIN操作中的作用不同:ON定义了表间连接的基础,而WHERE则对最终结果进行过滤。对于LEFT JOIN、RIGHT JOIN和FULL JOIN,ON条件的过滤是在生成中间表时进行的,而WHERE是在中间表生成后应用。...
LEFT JOIN DBS c ON a.DB_ID = c.DB_ID WHERE b.TBL_ID IS NULL AND c.NAME = 'dw'; ``` 2. **优化TEZ参数配置**: - 调整TEZ引擎的相关参数,比如增大允许的输入数据大小等,以避免数据丢失的问题。 - 可以...
这意味着在LEFT JOIN中,WHERE子句的条件会减少最终结果中的行数,而在INNER JOIN中,WHERE子句的条件与ON子句的效果相同,因为它们都在连接时应用。 在性能方面,虽然SQL语句6和7的逻辑效果相同,但它们的执行计划...
总结一下,`ON` 和 `WHERE` 在 `LEFT JOIN` 中的主要区别在于: 1. `ON` 用于在生成临时表时定义连接条件,无论条件是否满足,都会返回左表的所有行。 2. `WHERE` 在临时表生成后进行过滤,如果它包含了连接条件,...
在SQL查询中,JOIN操作是连接不同表的关键,主要用于整合多张表的数据,形成...希望这个实例代码的解析能帮助到你理解和运用INNER JOIN与LEFT JOIN。如果有任何问题,欢迎继续提问,我们将乐意提供更多的帮助和支持。
在SQL中,主要有四种类型的连接查询:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。下面将详细解释这四种连接方式。 1. 内连接(INNER JOIN): 内连接返回两个表中...
SQL 外链接操作小结 inner join left join right join SQL 外链接操作是关系型数据库管理系统中的一种基本操作,用于从多个表中检索数据。外链接操作可以分为三种:inner join、left join 和 right join。 inner ...
RIGHT JOIN 与 LEFT JOIN 相反,它以右表为基础,即使左表中没有对应的记录,也会显示右表的所有记录,并且左表中对应的列显示为 NULL。 #### 八、总结 本文详细介绍了 SQL 中 INNER JOIN 的基本概念、语法结构...
在进行数据库操作时,理解`ON`与`WHERE`条件的区别至关重要,尤其是在处理表连接(如`LEFT JOIN`、`INNER JOIN`等)时更为关键。这两种条件虽然都能用于限制结果集,但它们在执行时机、作用范围以及对结果的影响上...