You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中from后直接列多表与用join关联两表的写法有什么区别

两种SQL多表查询写法的差异说明

1. 执行效率层面

你给出的两种写法逻辑完全等价,都是对account和bank表做内连接,匹配两表id相等的行。所有主流关系型数据库(MySQL、PostgreSQL、Oracle、SQL Server等)的查询优化器,都会把两种写法解析成完全相同的执行计划,编译时间、运行效率没有任何差异,不需要担心性能层面的区别。

2. 语法规范层面

  • 第一种是SQL-89旧标准的隐式内连接写法:不明确声明连接类型,把表关联条件、业务过滤条件统一放在WHERE子句中。
  • 第二种是SQL-92新标准的显式内连接写法:明确用JOIN声明连接类型,把表关联条件单独放在ON子句中,业务过滤条件保留在WHERE子句中。

3. 实际使用建议

优先选择显式JOIN的第二种写法,优势非常明显:

  • 可读性更强:关联逻辑和过滤逻辑拆分清晰,多表关联(比如3张以上表连查)时不会出现一堆条件混在WHERE里,排查逻辑更方便
  • 容错率更高:隐式连接如果漏写关联条件会直接生成笛卡尔积,返回大量错误数据且很难定位问题;显式写JOIN ON漏写条件时,多数SQL编辑器会直接给出错误提示
  • 扩展性更好:后续如果需要调整为左连接、右连接等外连接逻辑,直接修改JOIN类型即可;隐式连接要实现外连接需要依赖不同数据库的方言语法,兼容性非常差

举个扩展场景的例子,增加account表状态为有效、薪资大于5000的过滤条件,显式写法的逻辑非常清晰:

select a.name, b.salary 
from account a
join bank b on a.id = b.id
where a.status = '有效' and b.salary > 5000;

内容的提问来源于stack exchange,提问作者mert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:54:01