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子句在连接操作后使用,用于过滤连接后的结果集
相关推荐
zt1985q24 分钟前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·网络协议·开源
IvorySQL1 小时前
PostgreSQL 日报| PostgreSQL 19 默认 WAL 压缩算法(8 月 8 日)
数据库·postgresql·区块链
油丶酸萝卜别吃2 小时前
MySQL B+ 树查询全过程详解
数据库·mysql
leisoo80972 小时前
股票数据本地化存储实战:JSON、数据库与列式存储的方案对比
jvm·数据库·json
Exclusive_Cat2 小时前
MySQL回表机制解析与优化策略
数据库·sql
Cry丶2 小时前
遗留系统数据迁移实战(九):区域编码迁移与补偿接口设计
mysql·数据治理·数据迁移·区域编码·补偿接口·组织区域
circuitsosk2 小时前
向量数据库选型与性能压测:Milvus、Pinecone、Chroma在真实业务下的对比
数据库·python·pinecone·milvus·向量数据库·chroma
影寂ldy2 小时前
SQL 索引(Index)完整笔记
数据库·笔记·sql
切糕师学AI2 小时前
从压缩到查询:PostgreSQL中JSON数据的存储与处理实践
数据库·postgresql·json
渣渣盟2 小时前
当 Redis 写入成为性能瓶颈时,如何利用 异步批量 Sink 将吞吐量从 1w QPS 提升到 10w+?
数据库·redis·php