MySQL多对多关系查询
时间: 2023-07-16 07:14:06 浏览: 91
在MySQL中,多对多关系通常需要使用一个中间表来处理。假设我们有两个表:学生表和课程表,一个学生可以报名多门课程,而一门课程也可以被多名学生报名。那么我们需要创建一个中间表,用于存储学生和课程的关系,例如:
```
CREATE TABLE student_course (
id INT NOT NULL AUTO_INCREMENT,
student_id INT NOT NULL,
course_id INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (student_id) REFERENCES student(id),
FOREIGN KEY (course_id) REFERENCES course(id)
);
```
其中,id为中间表的主键,student_id和course_id分别为学生表和课程表的外键。这样,当一个学生报名一门课程时,我们就在中间表中插入一条记录。
接下来,我们可以使用JOIN语句来查询多对多关系。例如,如果我们想查询某个学生所报名的所有课程,可以使用以下语句:
```
SELECT course.name FROM course
JOIN student_course ON course.id = student_course.course_id
WHERE student_course.student_id = 1;
```
其中,1为学生的ID,course为课程表,student_course为中间表。这条语句将返回该学生所报名的所有课程的名称。
同样地,如果我们想查询某门课程的所有学生,可以使用以下语句:
```
SELECT student.name FROM student
JOIN student_course ON student.id = student_course.student_id
WHERE student_course.course_id = 1;
```
其中,1为课程的ID,student为学生表,student_course为中间表。这条语句将返回该课程所有报名学生的名称。
阅读全文