有以下两张表学生表(学生ID,姓名,性别),成绩表(学生ID,科目,成绩)两表之间使用 学生ID进行 关联,查询出所有科目都大于60分得学生姓名,性别
这个用sql语句该怎么实现
学生表(学生ID,姓名,性别)
成绩表(学生ID,科目,成绩)
两表之间使用 学生ID进行 关联,
查询出所有科目都大于60分得学生姓名,性别
student(id,name,gender)
results(id,subjects,score)
select a.name,a.gender from student a,results b where a.id=b.id and b.score>60;
select 学生ID,姓名,性别 from 学生表 where id not in (select 学生ID from 成绩表 where 成绩 < 60);
学生表:student
成绩表:result
SQL语句:根据group by student_id having score>60 可以获取到大于60分的学生id
select
name,
sex
from
student
where
id in (
select
t.student_id
from
(
select
*
from
result
group by
student_id
having
score >= 60
) as t
)
SELECT
学生姓名,
学生性别
FROM
(SELECT
COUNT(学生ID) AS 科目数,
学生姓名,
学生性别
FROM
学生表,
成绩表
WHERE 学生表.学生ID = 成绩表.学生id
AND 成绩表.成绩 > 60
GROUP BY 学生ID)
WHERE 科目数 =
(SELECT
COUNT(1)
FROM
(SELECT DISTINCT
(科目)
FROM
`成绩表`) m)
备注:这个问题主要考察使用DISTINCT将科目表从成绩表里构建出来