用sql sever语句,查询所有学生的选课情况,不管他是否选课,都要查出学号,姓名,班级,课程号,成绩,未选课者则课程号和成绩为null,结果按班级降序排列,同一个班按学号降序排列
时间: 2024-10-21 13:02:11 浏览: 64
spring 异步编程样例
你可以使用SQL的`LEFT JOIN`语句结合`COALESCE`函数来实现这个查询。假设你有两个表,一个是学生信息表`Students`,有字段`StudentID`, `Name`, `ClassID`;另一个是选课记录表`Courses`,有字段`StudentID`, `CourseID`, `Grade`。如果某个学生没有选课,则`Courses`表中对应的学生ID、课程ID和成绩都应该为NULL。
以下是SQL查询语句:
```sql
SELECT s.StudentID, s.Name, s.ClassID, c.CourseID,
COALESCE(c.Grade, NULL) AS Grade
FROM Students s
LEFT JOIN Courses c ON s.StudentID = c.StudentID
ORDER BY s.ClassID DESC, s.StudentID DESC;
```
在这个查询中:
- `LEFT JOIN`用于连接`Students`表和`Courses`表,将每个学生的所有信息都包含进来,即使他们没有选课。
- `COALESCE(c.Grade, NULL)`使用`COALESCE`函数检查`c.Grade`是否存在,如果存在就返回该值,不存在则返回`NULL`。
- `ORDER BY`按照班级ID降序排序(`s.ClassID DESC`),在同一班级内部再按学生ID降序排序(`s.StudentID DESC`)。
阅读全文