MySQL三表联合查询实战(mysql三表连接)

MySQL三表联合查询是MySQL绝对不能回避的一种查询,本文将介绍如何使用MySQL的三表联合查询实现一些复杂的查询需求。

## 1. 常见的三表联合查询

常见的三表联合查询是以三个表为基础的多表连接查询,一般情况下第一张表作为主表,后面两张表至少拥有一个关联关系,其联合查询的结果是所有表中相应列取得结果的笛卡尔积。

假设有两张表student 和teacher,并且有如下数据:

* student表:

| StudentId | StudentName | TeacherId |

| :——: | :——: | :——: |

| s1 | Peter | t1 |

| s2 | Jack | t1 |

| s3 | Amy | t2 |

* teacher表:

| TeacherId | TeacherName |

| :——: | :——: |

| t1 | Tom |

| t2 | Mike |

若要查询出全体学生及其对应的老师信息,则可采用如下的三表联合查询语句:

“`sql

select student.StudentId,student.StudentName, teacher.TeacherId,teacher.TeacherName from student,teacher where student.TeacherId=teacher.TeacherId


执行以上语句得到的结果为:

| StudentId | StudentName | TeacherId | TeacherName |
| :------: | :------: | :------: | :------: |
| s1 | Peter | t1 | Tom |
| s2 | Jack | t1 | Tom |
| s3 | Amy | t2 | Mike |

## 2. 三表联合查询实战

该 esction 我们将使用三表联合查询来满足一个复杂的查询需求,使用以下三张表:

* student 表:存放学生信息

| StudentId | StudentName | Gender | Grade |
| :------: | :------: | :------: | :------: |
| s1 | Peter | male | 1 |
| s2 | Jack | male | 2 |
| s3 | Amy | female | 3 |

* subject 表:存放学生所学科目信息

| SubjectId | SubjectName | TeacherId |
| :------: | :------: | :------: |
| sub1 | Maths | t1 |
| sub2 | Science | t2 |
| sub3 | English | t3 |

* teacher 表:存放老师信息

| TeacherId | TeacherName |
| :------: | :------: |
| t1 | Tom |
| t2 | Mike |
| t3 | Lucy |

现在需要查询每个学生学习的所有课程及老师信息,则可以使用以下语句查询:

```sql
select student.StudentId,student.StudentName,subject.SubjectName,teacher.TeacherName from student,subject,teacher
where student.StudentId=subject.StudentId and subject.TeacherId=teacher.TeacherId

执行该语句得到的查询结果为:

| StudentId | StudentName | SubjectName | TeacherName |

| :——: | :——: | :——: | :——: |

| s1 | Peter | Maths | Tom |

| s1 | Peter | Science | Mike |

| s1 | Peter | English | Lucy |

| s2 | Jack | Maths | Tom |

| s2 | Jack | Science | Mike |

| s2 | Jack | English | Lucy |

| s3 | Amy | Maths | Tom |

| s3 | Amy | Science | Mike |

| s3 | Amy | English | Lucy |

通过以上 query,我们可以看出每个学生学习的所有课程及老师信息。

## 3. 总结

本文使用了MySQL三表联合查询来满足一个复杂的查询需求,展示了 MySQL 三表联合查询的简单应用,从而帮助读者掌握并掌握MySQL 三表联合查询的实战知识点。


数据运维技术 » MySQL三表联合查询实战(mysql三表连接)