MySQL查询条件中放置on和where的区别分析

 更新时间:2019年01月25日 10:45:28   作者:haoyq  
这篇文章主要给大家介绍了关于MySQL查询条件中放置on和where的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

导语

今天在写 SQL 的时候,遇到一个问题。需求是这样的,查询数据,按照评分倒序、近一周访问量倒序,这样进行排序。问题是常规的写法,将 day >= xxx 条件放到 where 中, 如果某些数据近一周没有访问量,那么这条数据就查不出来。解决办法呢,就是将条件放到 LEFT JOIN 中。

MySQL 语句执行顺序

首先先说明一个概念,MySQL 语句执行的顺序,并不是按照 SQL 语句的顺序。下面是示例 SQL

SELECT DISTINCT
 < select_list >
FROM
 < left_table > < join_type >
JOIN < right_table > ON < join_condition >
WHERE
 < where_condition >
GROUP BY
 < group_by_list >
HAVING
 < having_condition >
ORDER BY
 < order_by_condition >
LIMIT < limit_number >

下面是 SQL 的执行顺序

FROM <left_table>
ON <join_condition>
<join_type> JOIN <right_table>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
SELECT 
DISTINCT <select_list>
ORDER BY <order_by_condition>
LIMIT <limit_number>

LEFT JOIN 的作用

结果集的不同,不仅与 SQL 的优先级有关,还和 LEFT JOIN 有关

使用left join时on后面的条件只对右表有效

  • on是在生成临时表的时候使用的条件,不管on的条件是否起到作用,都会返回左表 (table_name1) 的行。
  • where则是在生成临时表之后使用的条件,此时已经不管是否使用了left join了,只要条件不为真的行,全部过滤掉。

以上是从两篇资料中摘抄的,可以很好的概括(原文链接在下方,其中都有示例)。

参考资料:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • SQL语句单引号与双引号的使用方法

    SQL语句单引号与双引号的使用方法

    这篇文章主要介绍了SQL语句中单引号、双引号的使用方法,分别讲述,虽然说的是Insert语句, 但是Select、Update、Delete语句都是一样的,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • 浅析Mysql 中如何导出数据

    浅析Mysql 中如何导出数据

    MySQL中你可以使用SELECT…INTO OUTFILE语句来简单的导出数据到文本文件上,这篇文章给大家介绍了Mysql 中如何导出数据,感兴趣的朋友跟随小编一起看看吧
    2023-11-11
  • MySQL连接控制插件介绍

    MySQL连接控制插件介绍

    当连接数据库失败次数过多时,MySQL 是否会限制登录呢?数据库服务端应该怎么应对暴力破解呢?本篇文章介绍下 MySQL 中的连接控制插件,一起来学习下此插件的作用,需要的朋友可以参考下面文章内容
    2021-09-09
  • MySQL数据库终端—常用操作指令代码

    MySQL数据库终端—常用操作指令代码

    这篇文章主要介绍了MySQL数据库终端—常用操作指令代码,添加用户、更改用户名和host主机、更改密码、删除用户等等,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-01-01
  • Mysql查询语句优化技巧

    Mysql查询语句优化技巧

    这篇文章主要介绍了Mysql查询语句优化技巧的相关资料,需要的朋友可以参考下
    2016-04-04
  • MySQL无法启动几种常见问题小结

    MySQL无法启动几种常见问题小结

    在群里看到有新同学还在问MySQL无法启动的问题,于是总结了几个常见情况与解决方法,需要的朋友可以参考下
    2013-09-09
  • mysql如何存储地理信息

    mysql如何存储地理信息

    MySQL存储地理信息通常使用GEOMETRY数据类型或其子类型,为了支持这些数据类型,MySQL 提供了 SPATIAL 索引,这允许我们执行高效的地理空间查询,这篇文章主要介绍了mysql如何存储地理信息,需要的朋友可以参考下
    2024-05-05
  • Mysql子查询关键字的使用方式(exists)

    Mysql子查询关键字的使用方式(exists)

    这篇文章主要介绍了Mysql子查询关键字的使用方式(exists),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • mysql数据库基础知识点与操作小结

    mysql数据库基础知识点与操作小结

    这篇文章主要介绍了mysql数据库基础知识点与操作,总结分析了mysql数据库修改数据表、增删改查及数据库函数基本功能,需要的朋友可以参考下
    2020-01-01
  • MySQL中JSON_ARRAYAGG和JSON_OBJECT函数功能和用法

    MySQL中JSON_ARRAYAGG和JSON_OBJECT函数功能和用法

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据,在MySQL数据库中,JSON格式的数据处理已经变得越来越常见,本文将深入探讨这两个函数的用途、语法和示例,以帮助您更好地理解它们的功能和用法,需要的朋友可以参考下
    2023-09-09

最新评论