Mysql中where与on的区别及何时使用详析

下面是关于"Mysql中WHERE与ON的区别及何时使用"的完整攻略:

区别

WHERE

  • WHERE是用于筛选行的(即对于SELECT语句或者UPDATE语句,我们使用WHERE语句来筛选需要处理的行记录);
  • WHERE是在数据表中,查询完成后进行过滤的,即先从表中检索记录,再通过WHERE进行判断,将符合条件的记录返回;

示例1:

SELECT * FROM表A 
WHERE A.X = '值1';

上面的语句会返回表A中所有X列值等于'值1'的所有记录。

ON

  • ON是用于连接表(即通过JOIN语句,连接两张或多张数据表,需要在ON子句中指定连接条件);
  • 在JOIN操作中,我们可以使用ON语句来指定两个表的关联条件,例如常用的INNER JOIN就是通过ON子句来指定连接条件的;

示例2:

SELECT * FROM 表A 
INNER JOIN 表B 
ON A.X = B.X;

上面的语句会通过INNER JOIN将表A和表B关联起来,并且要求它们的X列的值是相等的。

何时使用

  • 使用WHERE子句来定义过滤条件,只能用于当前查询的两个表的列之间无关联关系的条件比较;
  • 使用ON子句,可以实现各种连接操作的条件详细说明,包括JOIN、LEFT JOIN、RIGHT JOIN等等;

所以,当我们需要在连接多张数据表的时候,应该使用ON,而在针对单张数据表时,只需要使用WHERE就可以了。

示例3:

SELECT A.X, SUM(B.Y) 
FROM 表A 
JOIN 表B 
ON A.ID = B.AID 
WHERE A.X = '值1' 
GROUP BY A.X;

上面的语句会连接表A和表B,返回A表中X列值等于'值1'的所有记录,并且通过A表的ID列和B表的AID列进行关联,最后通过对B表的Y列进行SUM,返回一个汇总结果。

总的来说,WHERE一般用于过滤需要查询的数据,而ON则用于连接多张数据表的条件指定。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql中where与on的区别及何时使用详析 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Windows CMD命令大全(值得收藏)

    Windows CMD命令大全 介绍 本文将介绍Windows操作系统中CMD命令的常用语法和用法,帮助读者更好地了解和使用命令行工具,提高工作效率和操作的便捷性。 CMD命令分类 CMD命令大致可以分为以下几类: 帮助命令:如help、/?等,用于获取程序或命令的帮助信息。 文件操作命令:如dir、md、rd等,用于在计算机中进行文件和文件夹的操作。 系统…

    database 2023年5月22日
    00
  • Oracle 查询死锁并解锁的终极处理方法

    Oracle 查询死锁并解锁的终极处理方法 死锁是数据库中常见的问题之一,它会导致应用程序被挂起、性能下降,从而影响整个系统的可用性。本文将介绍Oracle查询死锁并解锁的终极处理方法,包括以下步骤: 检测死锁 Oracle提供了一些技术来检查是否存在死锁: 查询v$session视图 sqlSELECT s.sid, s.serial#, l.*, dec…

    database 2023年5月21日
    00
  • 浅析redis缓存 在spring中的配置 及其简单的使用

    一:如果你需要在你的本地项目中配置redis。那么你首先得需要在你的本地安装redis 参考链接【http://www.runoob.com/redis/redis-install.html】 下载redis在网上有很多 我这里就不多做解释了 下载以后 找到这样的三个文件  这是我们需要操作的 每个版本可能不一样 但这几个肯定是有的 然后 安装这个http:…

    Redis 2023年4月13日
    00
  • Docker批量容器编排的实现

    我将为您详细讲解“Docker批量容器编排的实现”的完整攻略,包含以下主要步骤: 使用Docker Compose编写相关的配置文件 对编写好的配置文件进行解析和解释 启动多个容器实例进行编排 监控和管理多个容器实例 下面将逐一详细解释这些步骤。 1. Docker Compose配置文件编写 Docker Compose是Docker官方提供的一个编排工具…

    database 2023年5月22日
    00
  • 解决mysql数据库设置远程连接权限执行grant all privileges on *.* to ‘root’@’%’ identified by ‘密码’ with grant optio报错

    这个问题可能是由于MySQL数据库服务器没有设置允许来自远程主机的连接,或者没有正确设置用户名和密码所致。为了解决这个问题,我们可以采取以下步骤: 修改MySQL数据库配置文件 首先需要修改MySQL数据库的配置文件 my.cnf,打开终端并输入以下命令查看文件是否存在: $ sudo ls -ahl /etc/mysql/my.cnf 如果文件不存在,可以…

    database 2023年5月18日
    00
  • 进入mysql命令行和退出mysql命令行详解

    进入MySQL命令行的步骤如下: 打开命令行界面(CMD或Terminal)。 输入以下命令,用于连接到MySQL服务器: mysql -u<用户名> -p 其中,<用户名>是你连接MySQL时使用的用户名。 例如,如果你的MySQL用户名是“root”,则输入以下命令: mysql -uroot -p 接下来,将提示你输入MySQL…

    database 2023年5月22日
    00
  • 详解MySQL IS NULL:空值查询

    在MySQL中,IS NULL被用于检测一个列是否为空值。如果列的值是空值,则IS NULL返回TRUE,否则返回FALSE。 下面是MySQL IS NULL语法的一般形式: SELECT column_name(s) FROM table_name WHERE column_name IS NULL; 以下是关于MySQL IS NULL的一些实例: 实…

    MySQL 2023年3月10日
    00
  • MySQL查看表结构的3种方法

    MySQL是一种流行的关系型数据库管理系统,拥有丰富的功能和工具,包括查看表结构的方法。下面是MySQL查看表结构的方法: 使用DESCRIBE查询语句 DESCRIBE语句是MySQL中查看表结构的一种基本方法。该命令可以显示表的列名、数据类型、键类型等信息。 语法: DESCRIBE table_name; 实例:假设我们要查看名为“employees”…

    MySQL 2023年3月9日
    00
合作推广
合作推广
分享本页
返回顶部