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

如何在MySQL中结合WHERE子句使用Inner Join筛选指定admin_id的记录?

正确SQL改写方案及错误分析

正确写法

有两种严谨且有效的写法:

  1. 在WHERE子句中指定表别名过滤
SELECT * FROM tuition t JOIN user u ON t.user_id = u.id WHERE t.admin_id = 1

这里明确指定admin_id属于tuition表(通过别名t),避免字段歧义(如果user表也存在同名字段时会引发错误)。

  1. 将过滤条件整合到JOIN的ON子句中
SELECT * FROM tuition t JOIN user u ON t.user_id = u.id AND t.admin_id = 1

这种写法逻辑上更清晰,先过滤tuition表中admin_id=1的记录,再与user表关联,内连接场景下和WHERE过滤效果一致。

原写法错误原因

  • 第一种写法未指定admin_id的所属表:若user表也有admin_id字段,数据库会因字段歧义无法执行;即使无歧义,也属于不严谨的写法,容易引发后续问题。
  • 第二种写法存在语法错误:WHERE子句不能直接衔接JOIN,JOIN是表关联语法,必须置于FROM之后、WHERE之前,不符合SQL语法规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:07:09