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

关于SQL中INNER JOIN与传统表连接写法的区别疑问

两种SQL内连接写法的差异解析

先给你明确结论:这两种写法都能正确查询到伦敦部门员工的薪资,最终返回的结果完全一致。

它们的核心区别在于写法标准和可读性:

  • 第一种是旧版隐式内连接:用逗号分隔多张表,把表连接条件(E.DP = D.DP)和过滤条件(D.CITY = 'LONDON')都放在WHERE子句里。这是SQL早期的写法,现在虽然还能运行,但不是推荐用法。
  • 第二种是SQL-92标准的显式INNER JOIN:通过INNER JOIN关键字明确声明表连接关系,用ON子句定义连接逻辑。这种写法更直观,能把“表怎么连”和“数据怎么过滤”的逻辑分开(你示例里把过滤条件也放ON里了,效果一样,但最佳实践是把连接条件放ON,过滤条件放WHERE,比如下面的写法):
SELECT E.SALARY
FROM EMPLOYEES E
INNER JOIN DEPARTMENTS D ON D.DP = E.DP
WHERE D.CITY = 'LONDON';

另外,显式JOIN还有个优势:多表连接时,不会把连接条件和过滤条件混在一堆WHERE条件里,更容易维护和排查错误;而隐式连接如果不小心漏写了连接条件,会直接生成笛卡尔积,返回大量无效数据,排查起来更麻烦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:21:11