sql查询所有学生的cname为数据库原理的成绩,没有选修该课程的学术成绩展示出来为NULL;有sc表,列名sno,cno,grade;有course表,列名cno,cname;有student表,列为sno,sname,ssex,sage,sdept
时间: 2024-10-22 21:13:04 浏览: 45
SQL 查询 检索 条件例句
你可以使用SQL的JOIN和LEFT JOIN语句来完成这个查询。假设你需要找出所有学生对"数据库原理"这门课的学术成绩,如果他们没有选修,则显示为NULL。这里是查询的基本结构:
```sql
SELECT student.sno, student.sname, course.cname, sc.grade
FROM student
LEFT JOIN sc ON student.sno = sc.sno AND course.cno = sc.cno
INNER JOIN course ON course.cno = '数据库原理'
WHERE sc.cno IS NULL OR (sc.cno IS NOT NULL AND sc.grade IS NOT NULL);
```
解释一下这个查询:
1. 使用`LEFT JOIN`将student表和sc表连接起来,同时连接course表以获取课程名称。
2. `INNER JOIN`课程表仅保留"数据库原理"对应的记录。
3. `WHERE`子句过滤结果:如果sc表中对应的学生对于这门课程的分数`sc.grade`为NULL(表示未选修),或者`sc.cno`本身为空(也表示未选修),则保留这条记录。
阅读全文