mysql 同表查询出只选择两门课程的学生姓名和学号
时间: 2023-11-16 11:19:45 浏览: 48
假设有一个学生选课表,包含学生学号(student_id)和课程名称(course_name)两列,可以使用以下 SQL 语句查询出只选择两门课程的学生姓名和学号:
```
SELECT student_id, COUNT(DISTINCT course_name) AS course_count
FROM 表名
GROUP BY student_id
HAVING course_count = 2;
```
其中,COUNT(DISTINCT course_name) 统计不同课程的数量,HAVING 语句筛选只选择了两门课程的学生。如果还需要查询学生姓名,可以将查询结果与学生表进行 JOIN 操作。
相关问题
mysql查询出只选修两门课程的学生学号和姓名(排除选修课程无成绩)
为了查询只选修两门课程的学生学号和姓名,我们需要使用多个表连接和聚合函数。以下是查询语句:
```sql
SELECT s.学号, s.姓名
FROM 学生表 s
JOIN 选课表 c ON s.学号 = c.学号
JOIN (SELECT 学号, COUNT(*) AS cnt FROM 选课表 WHERE 成绩 IS NOT NULL GROUP BY 学号 HAVING cnt = 2) t ON s.学号 = t.学号
WHERE c.成绩 IS NOT NULL;
```
这个查询语句中,我们首先连接了学生表和选课表,然后使用子查询和聚合函数找到只选修了两门课程的学生学号,最后再通过WHERE子句排除选修课程无成绩的情况。请注意,这个查询语句假设学生表的主键是学号,选课表的外键是学号。
用mysql 查询选修了2门以上课程的学生学号和平均成绩。
这是一个技术问题,可以回答。您可以使用以下SQL语句查询:
SELECT student_id, AVG(score) as avg_score
FROM course_selection
GROUP BY student_id
HAVING COUNT(*) >= 2;
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)