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日

相关文章

  • Derby和Cassandra的区别

    Derby和Cassandra都是数据库管理系统,但是它们在设计理念、架构和用途方面存在着不同。在本篇攻略中,我们将详细讲解Derby和Cassandra的区别。 Derby Derby是一种关系型数据库管理系统,它是Java平台上的嵌入式数据库。它具有以下特点: 开源、免费 轻量级、嵌入式 关系型、遵循ACID原则 适用于小型的本地应用程序 数据仓库/OL…

    database 2023年3月27日
    00
  • Linux系统中的文件类型及文件扩展名详解

    Linux系统中的文件类型及文件扩展名详解 介绍 在Linux系统中,文件系统中的每个文件都有一个文件类型和扩展名。文件类型表示该文件的属性,包括文件的权限、用户和组归属,以及时间戳信息等。扩展名则表示文件类型,通常用于指示该文件的内容类型,方便用户快速识别文件。 常见的文件类型 Linux系统中常见的文件类型有: 普通文件(regular file):即常…

    database 2023年5月22日
    00
  • centos 6.7 下安装 redis-3.2.5的步骤

    下面我将为你详细讲解 “centos 6.7 下安装 redis-3.2.5 的步骤”。 确认环境 在安装 redis-3.2.5 之前,需要先确认以下环境是否满足要求: 系统环境:CentOS 6.7 网络环境:能够访问互联网 系统环境:至少512MB内存 安装redis-3.2.5 安装依赖库 在安装 redis-3.2.5 之前,需要先安装一些依赖库。…

    database 2023年5月22日
    00
  • Linux下实现C++操作Mysql数据库

    当在Linux下使用C++编写应用程序时,需要操作MySQL数据库,可以使用MySQL提供的C++ API来实现。下面是实现的完整步骤: 步骤一:安装MySQL C++ Connector 首先需要安装MySQL C++ Connector,它是MySQL官方提供的连接MySQL数据库的C++库。在Ubuntu系统下,可以使用以下命令进行安装: sudo a…

    database 2023年5月22日
    00
  • MySQL之数据表的插入内容 空与非空(六)

    NULL与NOT NULL mysql> CREATE TABLE tb2( -> usename VARCHAR(20) NOT NULL, -> age TINYINT UNSIGNED NULL(可以为空) -> );Query OK, 0 rows affected (0.06 sec) mysql> SHOW COLU…

    MySQL 2023年4月16日
    00
  • dockerfile构建redis

    1.准备下载好的redis安装包.yum源:   [root@test test9]# ll总用量 1936-rw-r–r– 1 root root 396 9月 27 13:26 Dockerfile-rw-r–r– 1 root root 1975750 9月 18 09:14 redis-5.0.5.tar.gz             drw…

    Redis 2023年4月13日
    00
  • Mybatis-Plus之ID自动增长的设置实现

    下面是关于”Mybatis-Plus之ID自动增长的设置实现”的完整攻略: I. 前言 在使用Mybatis-Plus框架进行Java项目开发过程中,ID自增长是一个常见的需求。Mybatis-Plus提供了多种自增长的方式,本篇攻略就是要详细讲解其中的一种方式:MySQL的自增长。 II. MySQL的自增长配置 1. 创建表 创建表时,需要设置ID列为自…

    database 2023年5月21日
    00
  • 浅谈MySQL和MariaDB区别(mariadb和mysql的性能比较)

    浅谈MySQL和MariaDB区别 MySQL和MariaDB的概述 MySQL和MariaDB是两种关系型数据库管理系统。MySQL于1995年发布,目前被Oracle公司所拥有和维护。MariaDB是MySQL的分支,由MySQL的初创公司之一Monty Program AB主导开发,发布于2009年。MariaDB在功能上和MySQL基本一致,但也有一…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部