一张表,用sql查出只选两门课程的学生姓名和学号.
时间: 2024-03-07 16:49:00 浏览: 90
假设有以下表结构:
```
表名:student
字段:id(学号)、name(姓名)
表名:score
字段:id(学号)、course(课程名)
```
可以使用以下 SQL 语句查询只选了两门课程的学生姓名和学号:
```sql
SELECT s.id, s.name
FROM student s
INNER JOIN score sc ON s.id = sc.id
GROUP BY s.id, s.name
HAVING COUNT(DISTINCT sc.course) = 2;
```
这条 SQL 语句的含义是:先通过内连接将学生表和成绩表关联起来,然后按照学生的学号和姓名进行分组,最后在分组的结果中筛选出只选了两门不同课程的学生。
相关问题
查找同时选修数据库和数据结构两门课程的学生的学号和姓名
在数据库查询中,查找同时选修数据库和数据结构这两门课程的学生的学号和姓名通常涉及到联接操作。假设我们有两个表,一个是学生信息表(Students),另一个是课程选修表(Courses)。这两个表可能有如下的字段:
- Students 表:`StudentID`, `Name`
- Courses 表:`StudentID`, `CourseID`, `CourseTitle`
为了找到同时选修"数据库"和"数据结构"的学生,你需要通过`StudentID`关联这两个表,筛选出`CourseTitle`分别为"数据库"和"数据结构"的记录。SQL查询示例如下:
```sql
SELECT S.StudentID, S.Name
FROM Students S
INNER JOIN Courses SC1 ON S.StudentID = SC1.StudentID AND SC1.CourseTitle = '数据库'
INNER JOIN Courses SC2 ON S.StudentID = SC2.StudentID AND SC2.CourseTitle = '数据结构';
```
这个查询会返回所有同时在数据库和数据结构课程中注册的学生的学号和姓名。
用SQL语言表示“检索学习全部课程的学生姓名”,其中学生姓名、学号在S表中,学号、课程号在SC表中
可以使用以下的SQL语句表示:
SELECT DISTINCT S.学生姓名
FROM S, SC
WHERE S.学号 = SC.学号
AND SC.课程号 IN (SELECT 课程号 FROM SC GROUP BY 课程号 HAVING COUNT(*) = (SELECT COUNT(*) FROM S))
阅读全文