如何写这个sql语句?
发布网友
发布时间:2022-04-11 17:20
我来回答
共4个回答
热心网友
时间:2022-04-11 18:49
1可以使用谓词in实现:
select sname,sno from 学生表 where sno in(
select sno from 学生选课表 where cno in(
select cno from 课程表 where cname = '刘芳'))
可以使用连接实现:
select 学生表.sname,学生表.sno from 学生表,课程表,学生选课表 where (
学生表.sno = 学生选课表.sno and 学生选课表.cno = 课程表.cno and cname= '刘芳')
但这种方式有重复值,请用去掉重复的使用dist关键词
可以用混合方式实现
select cname,sno from 学生表 where sno in (select sno from 学生选课表,课程表 where 学生选课表.cno= 课程表.cno and cname = '刘芳')
太多方式了,不想写了都!
第二个问题:使用统计实现的
select sname,sno,age,sdept from 学生表 where sno in (select sno from 学生选课表 where count(*)>=3 group by sno)
要是看不懂后半句可以拆分:
select sname,sno,age,sdept from 学生表 where sno in (select sno from
(select sno,count(*) as tempconut group by sno) where tempcount >= 3)
这个是在外层.
当然也可以使用全部的连接:
select 学生表.sno,sname,agemsdept from 学生表,学生选课表 where 学生表.sno = 学生选课表.sno group by 学生表.sno having count(*) >= 3
当然,实现的方面不只是这些,还有几种呢!想怎么写就怎么写而已!
热心网友
时间:2022-04-11 20:07
1,
select SNO,SNAME
from 学生表
where SNO
in
(select SNOfrom 学生选课表 where CNO in
(select CNO from 课程表 where TEACHER='刘芳')
)
2,
select SNO,AGE,SDEPT from 学生表
where
SNO in
(select SNO from 学生选课表 group by SNO having count(*)>3)
热心网友
时间:2022-04-11 21:42
用右外联...................
热心网友
时间:2022-04-11 23:33
什么sql语句啊?这问题问的好奇怪!
这是多表查询,用join on语句。