MySQL查询至少选修一门课程的女学生
时间: 2023-11-24 14:52:16 浏览: 155
可以使用如下SQL语句查询至少选修一门课程的女学生:
```
SELECT *
FROM student
WHERE gender = '女' AND id IN (
SELECT student_id
FROM course_selection
GROUP BY student_id
HAVING COUNT(DISTINCT course_id) >= 1
);
```
这个查询语句中,首先在 `course_selection` 表中使用 `GROUP BY` 和 `HAVING` 子句来筛选出至少选修了一门课程的学生,然后在 `student` 表中使用 `WHERE` 子句来筛选出性别为女的学生,并且学生的ID在上一步筛选出的结果中。
相关问题
MySQL查询的实操题
好的,以下是一个MySQL查询实操题:
假设有一个学生表(student)和一个课程表(course),表结构如下:
student表:
| Field | Type | Null | Key | Default | Extra |
|---------|-------------|------|------|---------|----------------|
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| gender | varchar(2) | NO | | NULL | |
| age | int(11) | NO | | NULL | |
| address | varchar(50) | NO | | NULL | |
course表:
| Field | Type | Null | Key | Default | Extra |
|---------------|-------------|------|------|---------|----------------|
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| teacher | varchar(20) | NO | | NULL | |
| credit | float | NO | | NULL | |
| student_count | int(11) | NO | | NULL | |
请完成以下查询:
1. 查询所有学生的信息。
2. 查询所有选修课程的学生的姓名和课程名称。
3. 查询选修“数学”课程的所有学生的姓名和成绩。
4. 查询选修课程数目最多的学生的姓名和选修课程数目。
5. 查询所有学生的姓名、性别和年龄,并按照年龄升序排序。
6. 查询所有选修课程的名称和学生数量,并按照学生数量降序排序。
7. 查询选修课程数目大于等于3门的学生的姓名和选修课程数目。
8. 查询选修课程的平均学分。
9. 查询选修“数学”课程的平均成绩。
10. 查询选修课程平均成绩排名前三的课程的名称和平均成绩。
(注:假设每个学生只选修了一门课程,成绩是0到100的整数,数据仅供练习使用。)
用C++对EDUC数据库实现以下查询: (1)查询每个学生的情况以及他(她)所选修的课程; (2)求学生的学号、姓名、选修的课程名及成绩; (3)求选修C1 课程且成绩在90 分以上的学生学号、姓名及成绩; (4)查询每一门课的间接先行课。
这个问题同样是SQL查询的问题,以下是对应的SQL查询语句:
(1) SELECT 学生.学号,学生.姓名,课程.课程名称 FROM 学生 INNER JOIN 选课 ON 学生.学号=选课.学号 INNER JOIN 课程 ON 选课.课程编号=课程.课程编号;
(2) SELECT 学生.学号,学生.姓名,课程.课程名称,成绩.成绩 FROM 学生 INNER JOIN 选课 ON 学生.学号=选课.学号 INNER JOIN 课程 ON 选课.课程编号=课程.课程编号 INNER JOIN 成绩 ON 选课.学号=成绩.学号 AND 选课.课程编号=成绩.课程编号;
(3) SELECT 学生.学号,学生.姓名,成绩.成绩 FROM 学生 INNER JOIN 选课 ON 学生.学号=选课.学号 INNER JOIN 成绩 ON 选课.学号=成绩.学号 AND 选课.课程编号=成绩.课程编号 WHERE 选课.课程编号='C1' AND 成绩.成绩>=90;
(4) SELECT t1.课程编号,t1.课程名称,t2.课程名称 AS 先行课名称 FROM 课程 t1 LEFT JOIN 先修课程 ON t1.课程编号=先修课程.课程编号 LEFT JOIN 课程 t2 ON 先修课程.先行课程编号=t2.课程编号;
注意,在执行这些查询之前,需要确保你已经连接到EDUC数据库并具有相应的权限。如果你使用的是MySQL数据库,可以使用C++的MySQL Connector/C++库来实现连接和查询。如果你使用的是其他类型的数据库,需要使用相应的库来连接和查询。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)