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

MySQL 的 left join 操作中,on 和 where 都可以放置条件,但二者有一定的区别。

on 语句是在连接两个表的时候使用的,用来指定连接的条件;where 语句则是在连接之后对结果进行筛选的过程中使用的,用来指定筛选条件。

具体来说,常见的使用场景是:两个表之间有一个公共字段关联,通过 left join 进行连接,right table 中有些记录的关联字段值为空(即没有匹配到 left table),此时想要查询出在 right table 中关联字段值为空的记录。
在这种情况下,可以使用以下 SQL 语句进行查询:

SELECT A.*, B.*
FROM table_a AS A
LEFT JOIN table_b AS B ON A.id = B.id
WHERE B.id IS NULL;

在该 SQL 语句中,第一个表是 table_a,第二个表是 table_b。由于我们想要查找关联字段为空的记录,所以我们使用 LEFT JOIN,将 table_a 作为左表,table_b 作为右表。

B.id IS NULL 是该 SQL 语句的关键部分,表示查找在右表中没有匹配到左表的记录(即 B.id 为空)。将条件放在 where 中会筛选掉所有没有匹配到的记录,而在 on 中进行判断则可以将数据连接后再对空值进行筛选。

再举一个例子来说明,假设有一张表格 BlogPosts,还有一张表格 PostTags,它们之间通过 BlogPosts.Id 和 PostTags.BlogPostId 相关联。现在我们想要查找所有没有标签的博客,可以使用以下 SQL 语句:

SELECT *
FROM BlogPosts
LEFT JOIN PostTags ON BlogPosts.Id = PostTags.BlogPostId
WHERE PostTags.BlogPostId IS NULL;

在该 SQL 语句中,使用了 left join 连接两个表,然后在 where 中将条件设置为 PostTags.BlogPostId IS NULL,代表没有对应的标签。如果将该条件放在 on 中,则会将所有没有匹配到左表的记录放在结果集中,无法实现我们需要的筛选。

综上所述,在 left join 操作中,on 和 where 都是起到条件筛选的作用,但位置不同,作用也不同。on 操作在连接两个表的关系时使用,用于作为连接条件;where 操作在连接两个表之后,在筛选结果集时使用,用于过滤出符合条件的记录。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL left join操作中on和where放置条件的区别介绍 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 如何检查Mac电脑中有32位元软体 macOS Catalina升级前检查32位元软件方法

    如何检查Mac电脑中有32位元软体 在升级到macOS Catalina之前,你可以通过以下步骤检查你的Mac电脑中是否存在32位元软件。macOS Catalina不再支持32位元软件,因此在升级之前,你需要确保所有的软件都是64位元的。 步骤一:打开“关于本机” 首先,你需要打开“关于本机”窗口,以查看你的Mac电脑的系统信息。 点击屏幕左上角的苹果图标…

    other 2023年7月28日
    00
  • 使用shutdown命令实现远程关机和重启

    当你想在远程服务器上执行关机或重启等操作时,可以使用shutdown命令。下面是使用shutdown命令实现远程关机和重启的完整攻略: 1. 登录远程服务器 使用SSH协议通过终端连接远程服务器。例如,在Linux系统上,可以使用以下命令登录: ssh <username>@<ip-address> 替换<username&gt…

    other 2023年6月27日
    00
  • 获取客户端网卡MAC地址和IP地址实现JS代码

    获取客户端网卡MAC地址和IP地址是通过JavaScript代码实现的。下面是一个完整的攻略,包含了两个示例说明。 步骤1:获取客户端IP地址 要获取客户端的IP地址,可以使用WebRTC(Web实时通信)技术。下面是一个示例代码: // 创建一个RTCPeerConnection对象 const pc = new RTCPeerConnection(); …

    other 2023年7月30日
    00
  • ping 127.0.0.1和ping本地ip分别测试什么?

    ping 127.0.0.1和ping本地ip分别测试什么? Ping命令是一个用于测试与目标网络设备之间的连通性的网络工具。当我们需要测试本地网络设备的连通性时,可以使用Ping命令进行测试。在本文中,我们将介绍如何使用Ping命令进行测试,并详细说明Ping 127.0.0.1和Ping本地IP的作用。 如何使用Ping命令进行测试? 在Windows操…

    其他 2023年3月28日
    00
  • php 实现账号不能同时登陆的方法分析【当其它地方登陆时,当前账号失效】

    实现账号不能同时登录的方法可以通过以下几个步骤来实现: 1. 给用户添加一个会话标识 在用户登录成功后,我们可以给当前用户添加一个会话标识,例如一个token,用来记录当前用户的会话状态。 2. 在用户登录时检查会话标识 在用户登录时,我们需要先检查当前用户是否已经有会话标识了,如果已经有了,则表示当前用户已经登录了。我们可以进行一些处理,例如提示用户当前账…

    other 2023年6月27日
    00
  • mysql 5.7.24 安装配置方法图文教程

    MySQL 5.7.24 安装配置方法图文教程 1. 下载安装文件 首先,你需要到 MySQL 官网下载 MySQL 5.7.24 的安装包,选择正确的操作系统版本:https://dev.mysql.com/downloads/mysql/5.7.html 2. 安装 MySQL 在下载完 MySQL 安装包之后,你需要执行以下步骤来安装 MySQL: 1…

    other 2023年6月20日
    00
  • js oncontextmenu事件使用详解

    请看下文,这里将详细讲解关于“js oncontextmenu事件使用详解”的完整攻略。 什么是oncontextmenu事件? oncontextmenu事件是JavaScript中的一种鼠标事件,当用户在一个元素上右键单击时触发该事件。常用于在网页中定义自定义的右键菜单。 使用oncontextmenu事件的基本语法 element.oncontextm…

    other 2023年6月27日
    00
  • 常见电子书格式及其反编译思路分析第2/3页

    首先,对于“常见电子书格式及其反编译思路分析第2/3页”的攻略,我们需要了解常见的电子书格式和它们的反编译思路。 常见的电子书格式有EPUB、MOBI、PDF等,每种格式都有自己的特点和加密方式。 接下来我们分别介绍这些电子书格式的特点和反编译思路。 EPUB格式 EPUB格式是电子出版物最常用的格式之一,它可以让用户在不同设备上阅读同一份电子书,因此备受欢…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部