目前有学生表,课程表和成绩表,使用sql语句编写一条语句查询每位学生语文、数学、外语三门课程成绩的 SQL(结果列:姓名、语文数学、外语)。
时间: 2023-05-19 08:06:06 浏览: 51
SELECT 学生表.姓名, 课程表.语文, 课程表.数学, 课程表.外语
FROM 学生表
INNER JOIN 课程表 ON 学生表.学号 = 课程表.学号
INNER JOIN 成绩表 ON 课程表.课程号 = 成绩表.课程号 AND 学生表.学号 = 成绩表.学号
WHERE 课程表.课程名称 IN ('语文', '数学', '外语')
相关问题
目前有学生表,课程表和成绩表,使用sql语句编写一条语句查询每位学生语文、数学、外语三门课程成绩的 SQL
语句应该是:
SELECT 学生表.姓名, 课程表.课程名称, 成绩表.成绩
FROM 学生表, 课程表, 成绩表
WHERE 学生表.学号 = 成绩表.学号
AND 课程表.课程编号 = 成绩表.课程编号
AND (课程表.课程名称 = '语文' OR 课程表.课程名称 = '数学' OR 课程表.课程名称 = '外语')
学生表t,字段学生id(sid)姓名(name),成绩表x,字段成绩id(scid)课程id(cid)学生id(sid)分数id(sc_val),课程表s,字段课程id(cid)课程名(cname),查询每位学生语文数学外语三门课程成绩的sql
可以使用以下 SQL 查询每位学生语文数学外语三门课程成绩:
```
SELECT t.sid, t.name,
MAX(CASE WHEN s.cname = '语文' THEN x.sc_val ELSE NULL END) AS '语文',
MAX(CASE WHEN s.cname = '数学' THEN x.sc_val ELSE NULL END) AS '数学',
MAX(CASE WHEN s.cname = '外语' THEN x.sc_val ELSE NULL END) AS '外语'
FROM t
INNER JOIN x ON t.sid = x.sid
INNER JOIN s ON x.cid = s.cid
GROUP BY t.sid, t.name;
```
这个查询使用了 `INNER JOIN` 将学生表、成绩表和课程表联结起来,然后使用 `CASE` 语句筛选出每位学生的语文、数学和外语成绩。最后按照学生的编号和姓名进行分组,得到每位学生语文数学外语三门课程成绩的结果。