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

SQL关联两表查询作者King的图书 该JOIN写法是否正确?

结论

你写的语句能查出正确结果,但写法不推荐。

对于INNER JOIN(也就是你写的JOIN,默认就是内连接)来说,过滤条件放在ON后面和WHERE后面,执行逻辑和返回结果没有区别,你写的语句跑起来不会报错,返回的title也确实是作者名为King的所有图书,结果准确性没问题。

存在的问题

这种写法把表关联条件和结果过滤条件混在了一起,可读性很差:其他人读代码的时候没法第一眼分清哪个条件是用来做两表匹配的,哪个是用来筛选数据的。
更麻烦的是,如果你之后把连接类型改成LEFT JOIN/RIGHT JOIN这类外连接,把过滤条件写在ON里和写在WHERE里返回的结果会有本质区别,很容易写出隐蔽的逻辑bug。

推荐写法

建议把两类条件按语义拆分书写,标准实现如下:

SELECT book.title
FROM book
JOIN author
  ON book.author_id = author.id
WHERE author.name = 'King';

额外提两个小规范:

  • SQL关键字建议统一大写,表名、字段名按你原本的命名规则书写即可,适当换行缩进,后续维护成本会低很多
  • JOIN默认等价于INNER JOIN,日常写内连接时可以省略INNER关键字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:39:09