sql查询问题,具体问题如下

若有student表和grand表如下

student表

idname
1张三
2李四
3王五

grand表

idgrandstuid
1901
2901
3901
4902
5912
6932
7903
8903
9913

我要查出grand=90的人的name如何查询?

问题补充:
我想查出的结果只有张三,也就是只有张三的grand都为90,而不是只要是90的就查询出来!

回答问题前请各位大神先看看题目,谢谢啦!

1.换个思想:都大于等于90意思就是没有一个小于90的

where grand <90

2.找到grand 小于90的学生id:不管多少门课,只要有一个不上90的都被查出该学生的id

select stuid from grand where grand<90 group by stuid

3.过滤掉这些学生,那么剩下的就是都是超过90的学生了

select * from student where id not in(select stuid from grand where grand<90 group by stuid )

selet grand from grand where>90;
selet t.name from grand g left join student t on t.id=g.stuid where g.grand>=90;
select s.name from student s join grand g on s.id=g.stuid where g.grand=90

select * from student where id in (selet stuid from grand where grand=90)

第一可以用联合查询的方式,就是链表了
inner join ,但是推荐使用left join
select s.name from student s left join grand g on s.id=g.stuid where g.grand=90 group by g.stuid;
第二可以用嵌套查询
select * from student where id in (select stuid from grand where grand=90 group by stuid)