博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 查询条件放置 on 和 where 的区别
阅读量:6324 次
发布时间:2019-06-22

本文共 887 字,大约阅读时间需要 2 分钟。

导语

今天在写 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 
ON
JOIN
WHERE
GROUP BY
HAVING
SELECT DISTINCT
ORDER BY
LIMIT

LEFT JOIN 的作用

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

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

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

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


参考资料:、、。

转载地址:http://kvmaa.baihongyu.com/

你可能感兴趣的文章
发力1小时到家服务,山姆与京东到家共建前置仓获10倍坪效、60%月复购率
查看>>
java B2B2C 源码多租户电子商城系统-Spring Cloud组件详解
查看>>
苹果又挖VR界大牛,这次是Jaunt 的创始人
查看>>
【直播回顾】云栖社区特邀专家蒋泽银:Jpom一款低侵入式Java运维、监控软件...
查看>>
CefSharp中ChromiumWebBrowser打开新页面处理(_blank)
查看>>
解决ipad连接不上电脑的问题
查看>>
全球数字化报告 2019 发布:每 11 秒产生一位网络新人
查看>>
Kubernetes(六) - Secret和私有仓库认证
查看>>
DBeaver 社区版 6.0.2 发布,可视化数据库管理平台
查看>>
jQuery自定义右键菜单
查看>>
分布式工具的一次小升级⏫
查看>>
WPF 降低.net framework到4.0
查看>>
计算机网络中的应用层
查看>>
iOS NSURLSession UploadTask(上传任务)
查看>>
在Linux 中安装cmus 用命令行中玩转音乐库
查看>>
Kubernetes and Cloud Native Meetup 资料下载
查看>>
如何提高阿里云上应用的可用性(二)
查看>>
matlab 的数据类型
查看>>
Macbook从零开始配置开发环境——命令行工具
查看>>
Git前言
查看>>