一条多对多关系表的Sql查询语句

例如一个学生选课表student_course中含有字段学生id:StudentID,课程id:CourseID;现在要查询选课人数大于30的课程及选课学生,我的写法如下... 例如一个学生选课表student_course中含有字段学生id:StudentID,课程id:CourseID;
现在要查询选课人数大于30的课程及选课学生,我的写法如下:
select StudentID, CourseID
from student_course
where CourseID in
(
select CourseID
from student_course
group by CourseID
having COUNT(CourseID)>30
)
有简便写法没?
展开
 我来答
17号观察室
2013-06-18 · TA获得超过5730个赞
知道大有可为答主
回答量:3666
采纳率:66%
帮助的人:1344万
展开全部
--楼主这样写就挺好塌橘的了 可以有几种写法
--我败游这样写比你那样的性能要好点团枯团
select StudentID, CourseID
from student_course a where exists(select 1 from student_course b where a.CourseID=b.CourseID and a.StudentID=b.StudentID
group by CourseID
having COUNT(1)>30)
追问
有将两端语句 合并起来的方法吗?
追答
--不行 必须有一个嵌套 因为你有一个聚合函数 然后又查询另外的字段
--你是08吗? 如果是 还有一种写法 这个写法就像按照CourseID排序了 只要bz有
--30 就代表超过30个 这样也得嵌套

select StudentID, CourseID,ROW_NUMBER() over(partition by CourseID order by StudentID) bz
from student_course
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式