mysql中where与on区别

WHERE子句

  • 作用范围WHERE子句主要用于过滤FROM子句返回的结果集。它可以在SELECTUPDATEDELETE语句中使用,以限制哪些行被包含在最终的查询结果中,或者哪些行被更新或删除。
  • 应用场景 :当需要基于某些条件过滤结果集时,使用WHERE子句。例如,查询年龄大于30的所有用户。
  • 与JOINs的关系 :在JOIN操作中,WHERE子句通常用于过滤连接后的结果集,即先连接两个或多个表,然后根据WHERE子句中的条件过滤结果。但是,使用WHERE子句过滤连接条件(即,作为连接条件)通常不是最佳实践,因为这可能会导致不必要的全表扫描或笛卡尔积(如果连接条件被错误地放在WHERE中而没有ON子句)。

ON子句

  • 作用范围ON子句专门用于JOIN操作中,用于指定两个或多个表之间的连接条件。它决定了哪些行应该被连接在一起。
  • 应用场景 :当需要连接两个或多个表,并基于某些条件匹配行时,使用ON子句。例如,连接用户表和订单表,基于用户ID匹配用户和他们的订单。
  • 与WHERE的关系 :虽然ON子句和WHERE子句都可以包含条件,但它们的用途不同。ON子句用于定义如何连接表,而WHERE子句用于过滤连接后的结果集。在某些情况下,两者可以组合使用,以先连接表,然后过滤结果。

总结

  • 使用ON子句来定义表之间的连接条件。
  • 使用WHERE子句来过滤查询结果,或者作为连接后结果的进一步筛选条件。
  • 在进行表连接时,应优先使用ON子句来指定连接条件,因为这样可以提高查询效率,避免不必要的全表扫描或笛卡尔积。
  • WHERE子句在连接操作后使用,用于过滤连接后的结果集
相关推荐
龙亘川30 分钟前
旅游强国建设|一网统管智慧旅游服务模块,赋能节假日文旅数字化治理
大数据·数据库·人工智能·科技·智慧城市·旅游
星火跨境XINGHUOS41 分钟前
技术向辨伪:从商标查证到源码资产,如何核验网络上的z真假“星火跨境“
数据库
Databend1 小时前
只看 PASS 会骗你,6 条 Agent Trace 里的 Coding Agent 评测真相
大数据·数据库·agent
小袁拒绝摆烂1 小时前
一条 SQL 从 30 秒到 300 毫秒:聊聊 MySQL 的 Hash Join
sql·mysql·哈希算法
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之密码验证规则与自定义注解
java·数据库·spring
少陽君2 小时前
Python 并发编程:IO 等待用线程/asyncio,CPU 计算才用进程
数据库·python·php
这个DBA有点耶2 小时前
VLDB 2026核心议题解读:当负载被AI改写,数据库的内核该往哪走?
数据库·架构·aigc
敲代码的嘎仔2 小时前
自己设计了一个兑换码算法:自增ID + Base32转码 + 按位加权签名 + 异或混淆,面试被追问细节时终于不用慌了
java·数据库·mysql·算法·微服务·面试·职场和发展
shirsl3 小时前
数据开发实时项目问题整理
数据库·sql·big data
bbq粉刷匠3 小时前
数据库设计实践
数据库