mysql查询语句join、on、where的执行顺序

MySQL 查询语句中包含 join、on 和 where 三个关键词,它们的执行顺序如下:

  1. 笛卡尔积:从每个表中获取所有的行,将它们合并成一个虚拟表(即笛卡尔积)。
  2. on条件筛选:使用 on 关键词对笛卡尔积进行筛选,只输出符合 on 条件的行。
  3. where条件筛选:使用 where 关键词对筛选后的结果进行筛选,只输出符合 where 条件的行。

从上面的过程可以看出,where 关键词在这个过程中的作用是在 on 筛选后的结果中进行的。

下面是两个示例:

示例一:

SELECT *
FROM table1
JOIN table2
ON table1.id = table2.id
WHERE table1.name = 'John'

这个查询语句的执行顺序是:
1. 获取 table1 和 table2 中所有的行,将它们合并成笛卡尔积。
2. 对笛卡尔积进行 on 条件筛选,只输出 table1.id = table2.id 的行。
3. 对 on 筛选后的结果进行 where 条件筛选,只输出 table1.name = 'John' 的行。

示例二:

SELECT *
FROM table1
LEFT JOIN table2
ON table1.id = table2.id
WHERE table2.id IS NULL

这个查询语句的执行顺序是:
1. 获取 table1 和 table2 中所有的行,将它们合并成笛卡尔积。
2. 对笛卡尔积进行 on 条件筛选,只输出 table1.id = table2.id 的行,如果 table2 中没有符合条件的行,则输出 table1 中所有的行。
3. 对 on 筛选后的结果进行 where 条件筛选,只输出 table2.id IS NULL 的行,即输出 table1 中没有与 table2 匹配的行。

综上所述,join、on 以及 where 关键词的执行顺序是先进行笛卡尔积,然后进行 on 条件筛选,最后进行 where 条件筛选。若未特别指定,join 的默认类型为 inner join。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql查询语句join、on、where的执行顺序 - Python技术站

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

相关文章

  • ASP.NET Core 使用Redis 存储Session 实现共享 Session

      1.添加nuget程序包: Microsoft.Extensions.Caching.Redis 2.在appsettings.json中添加Redis配置: “ConnectionRedis”: { “Connection”: “127.0.0.1:6379,allowAdmin=true,password=123456,defaultdatabase…

    Redis 2023年4月11日
    00
  • Java程序员新手老手常用的八大开发工具

    Java程序员新手老手常用的八大开发工具 作为Java程序员,对于开发工具的选择和使用显得尤为重要。下面介绍Java程序员新手到老手常用的八大开发工具,帮助程序员高效、快速地完成开发工作。 1. Eclipse Eclipse是开发Java应用程序最流行的集成开发环境(IDE),它具有丰富的插件、工具链和快捷键。它支持多种编程语言,包括Java,C++,PH…

    database 2023年5月21日
    00
  • 4D 和 ADABAS 的区别

    4D和ADABAS是两种不同类型的数据库管理系统。 4D是一个关系型数据库管理系统,适用于小型企业和个人开发者,主要特点是灵活性高、易于使用、易于维护。4D的架构设计使其具有高度的可扩展性,还支持SQL语言和ODBC接口等多种数据访问方式,而且在数据安全方面也有很好的表现。 ADABAS是一种层次型数据库管理系统,主要适用于大型企业和机构。ADABAS的特点…

    database 2023年3月27日
    00
  • python 连接 redis cluster 集群

    一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群   二. python 连接 redis cluster 集群   第三方库:     redis-py-cluster: 最近还在维护     rediscluster: 似乎很久没…

    Redis 2023年4月11日
    00
  • 阿里云官方Redis开发规范总结

    阿里云官方Redis开发规范总结是一份指南,旨在协助开发人员写出可读性高、易于维护、高质量稳定的Redis代码。下面将详细讲解这份规范的内容和应用。 规范概述 阿里云官方Redis开发规范总结主要包含以下5部分: 代码风格:包括命名规范、缩进、空格等基本代码编写风格。 数据类型使用:要求开发人员选择合适的数据类型,遵循基本的数据结构设计原则。 业务逻辑实现:…

    database 2023年5月19日
    00
  • Oracle 的入门心得 强烈推荐

    Oracle 的入门心得 强烈推荐 简介 Oracle 是一款流行的关系型数据库管理系统,广泛应用于企业级应用程序开发和运维。本篇文章将提供一些入门心得和建议,帮助初学者更好地接触和学习 Oracle 数据库。 安装 首先,需要下载并安装 Oracle 数据库。可以从 Oracle 官方网站下载最新版本的 Oracle Database,然后按照安装向导的提…

    database 2023年5月21日
    00
  • 浅析Python中MySQLdb的事务处理功能

    浅析Python中MySQLdb的事务处理功能 MySQLdb是Python中一个广为使用的MySQL数据库连接库。在实际应用中,对于大多数操作而言,单个SQL语句已经足够满足需求。但对于涉及到多条SQL语句的复杂操作,事务处理是必不可少的。MySQLdb提供了事务处理功能,能够确保操作成功或者失败的原子性。 开启事务 在MySQLdb中,使用connect…

    database 2023年5月22日
    00
  • DBMS 中断言和触发器的区别

    DBMS中断言和触发器都是能够在数据库中执行一些自动化操作的机制,但是它们之间有明显的区别。 断言 断言是指在应用程序和数据库之间的一种验证机制,用于确保在数据库中插入、更新或删除数据时满足某些条件。如果这些条件不被满足,就会抛出一个错误消息并回滚事务。 断言通常有两种类型:检查和动作。 检查断言验证某些数据是否已经存在于数据库中。如果它存在,插入会失败。 …

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