Loading... **多表联查(Multi-table Join)是 SQL 中最核心的功能。它的核心逻辑就像**“拼积木”:先拿一块主积木,然后一块一块地把相关的积木拼上去。 #### 1.通用的多表联查语句 ``` SELECT 表1.字段, 表2.字段, 表3.字段 FROM 主表名 表1别名 JOIN 关联表2名 表2别名 ON 表1.关联字段 = 表2.关联字段 JOIN 关联表3名 表3别名 ON 表2.关联字段 = 表3.关联字段 -- 可以继续加更多 JOIN ... WHERE 筛选条件; ``` #### 2.常见问题 **2.1** **怎么区分主表/从表(语法上)?** * **主表(左表)**:写在 `JOIN` 关键字**左边**的表 * **从表(右表)**:写在 `JOIN` 关键字**右边**的表 * *注意:这只是语法上的称呼,不代表谁更重要,也不代表谁一定是驱动表* **2.2** **三表联查时,表应该写在什么位置?** * **顺序**:`核心表` -> `JOIN` `关联表1` -> `JOIN` `关联表2` * *通常建议*:把**数据量最大**或者**你最关心主体数据**的表放在最前面(`FROM` 后面) **2.3** **`ON` 后面优先写哪个字段?** * **原则**:**`左表.字段 = 右表.字段`**。 * **口诀**:**“左边的表点字段,等于右边的表点字段”** * **虽然写成 **`右 = 左` 数据库也能跑,但为了代码可读性,**强烈建议**保持 `左 = 右` 的顺序,这样别人一眼就能看出连接方向 **划重点啦!!!** **每次看到 **`JOIN`,就画一条竖线 `|`。线左边是当前的主集合,线右边是刚加进来的新表。找清楚主体,分析哪个表是我要加进来的!!! #### 3.实战演练:三表联查怎么写? **假设我们要查:****A学院25级所有学生的姓名。** **(学生表:school\_student,班级表:school\_squad,学院表:school\_college)** **第一步:确定主体(谁在FROM后面?)** **我们要查的是“学生”,所以 ****`school_student`** 放最前面 **第二步:确定连接顺序(像链条一样)** **学生 -> 依赖 -> 班级 -> 依赖 -> 学院。** **所以顺序是:**`学生` `JOIN` `班级` `JOIN` `学院` **第三步:编写代码(严格遵循 `左.字段 = 右.字段`)** ``` SELECT s.student_name FROM school_student s JOIN school_squad sq ON sq.squad_id = s.squad_id JOIN school_college sc ON sc.college_id = s.college_id WHERE sc.college_name = 'A' AND sq.grade_num = '2025'; ``` #### 4.结论 **按业务逻辑链条排**:`主体表` -> `直接关联表` -> `间接关联表`。 例如:`学生` -> `班级` -> `学院` **按照这个逻辑去写,无论多少张表联查,你的思路都会清晰如流水!** 最后修改:2026 年 03 月 24 日 © 允许规范转载 赞 1 如果觉得我的文章对你有用,请随意赞赏
此处评论已关闭