如何使用MySQL查询选取至少选修了刘老师两门课程的所有女性学生的姓名?
时间: 2024-11-25 09:06:24 浏览: 24
学生课程实验 使用QT+Mysql 实现学生选课管理系统
在MySQL中,你可以使用JOIN、GROUP BY和HAVING语句来完成这个查询。假设我们有两个表:`students`(包含学生信息,如id,name,gender等)和`courses`(包含课程信息,如id,teacher_id,student_id等),可以按照以下步骤编写SQL:
```sql
SELECT s.name
FROM students s
JOIN (
SELECT student_id
FROM courses
WHERE teacher_id = (SELECT id FROM teachers WHERE name = '刘老师')
) c1 ON s.id = c1.student_id
JOIN (
SELECT student_id
FROM courses
WHERE teacher_id = (SELECT id FROM teachers WHERE name = '刘老师')
) c2 ON s.id = c2.student_id AND c1.student_id <> c2.student_id
WHERE s.gender = '女'
GROUP BY s.id, s.name
HAVING COUNT(*) >= 2;
```
这里的关键点是首先通过两次JOIN获取每位女生选修刘老师两门课程的数据,然后使用GROUP BY将结果按学生ID和姓名分组,并通过HAVING过滤出至少选择了两门课程的学生。
阅读全文