千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:沈阳千锋IT培训  >  技术干货  >  left join 涉及多个关联条件时写在on后面与where后面有什么区别?

left join 涉及多个关联条件时写在on后面与where后面有什么区别?

来源:千锋教育
发布人:xqq
时间: 2023-10-19 02:00:22

一、left join 涉及多个关联条件时写在on后面与where后面的区别

在 SQL 中,LEFT JOIN 连接操作是用来连接两个或多个表的。当涉及到多个关联条件时,这些条件可以写在 ON 后面,也可以写在 WHERE 后面。但是它们的作用是不同的。

如果多个关联条件写在 ON 后面,这些条件将被视为 LEFT JOIN 操作的一部分,并且将会影响到连接后的结果集。如果多个关联条件写在 WHERE 后面,这些条件将被视为对连接后的结果进行过滤。

实例:

表1(product):

表2(product_details):

查询1:

SELECT * FROM product LEFT JOIN product_details
ON (product.id = product_details.id)
AND product.amount=200;

结果:

把on的所有条件作为匹配条件,不符合的右表都为null。

查询2:

SELECT * FROM product LEFT JOIN product_details
ON (product.id = product_details.id)
WHERE product.amount=200;

结果:

匹配完再筛选,结果只有一条记录。

二、SQL语言JOIN详解

SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

不同的 SQL JOIN 类型:

INNER JOIN:如果表中有至少一个匹配,则返回行LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行FULL JOIN:只要其中一个表中存在匹配,则返回行

下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法:

1、SQL INNER JOIN

语法:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

或者:

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

参数说明:

columns:要显示的列名。table1:表1的名称。table2:表2的名称。column_name:表中用于连接的列名。

注释:INNER JOIN 与 JOIN 是相同的。

2、SQL LEFT JOIN

语法:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

或者:

SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;

注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。

3、SQL RIGHT JOIN

语法:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;

或者:

SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;

注释:在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。

4、SQL FULL JOIN

语法:

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;

延伸阅读1:SQL是什么

SQL 指结构化查询语言,全称是 Structured Query Language。SQL 让您可以访问和处理数据库,包括数据插入、查询、更新和删除。SQL 在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

C语言中定义与声明的含义是什么?

2023-10-19

Oracle/MySQL数据库创建索引的原则是什么?

2023-10-19

java.sql.Date,java.sql.Time和java.sql.Timestamp什么区别?

2023-10-19

最新文章NEW

C++ 写即时通讯服务器用什么数据库比较合适?

2023-10-19

云数据库并发数和连接数是个怎样的关系?

2023-10-19

为什么有些低端云主机(1CPU,4G内存)也提供SQLServer,这大型数据库,能运行吗?

2023-10-19

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>