首页 > 数据库 > mysql教程 > SQL问题:集合相等

SQL问题:集合相等

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-07 16:14:41
原创
2087 人浏览过

假设有一张成绩表(score):字段如下: sid:学生学号, cid:课程编号, score:成绩 求所修课程完全相同的同学的学号。这个问题其实关键在于求课程集合相等的问题。 可以使用如下sql即可求出两个所修课程完全相同的同学的学号: select s1.sid,s2.sid fro

假设有一张成绩表(score):字段如下: sid:学生学号, cid:课程编号, score:成绩 求所修课程完全相同的同学的学号。这个问题其实关键在于求课程集合相等的问题。 可以使用如下sql即可求出两个所修课程完全相同的同学的学号:

select s1.sid,s2.sid from score s1 INNER JOIN score s2 ON
(s1.cid=s2.cid and s1.sid < s2.sid) GROUP BY s1.sid,s2.sid
        HAVING count(*) = (select count(*) from score where s1.sid=sid)
         AND
        count(*) = (select count(*) from score where s2.sid=sid);
登录后复制

集合相等的问题可以衍生出如求与学号002同学所修课程完全相同的其它同学的学号和姓名:

select st.sid,st.sname from student st where st.sid in ( select sc.sc_sid from ( select s1.sid,s2.sid as sc_sid from score s1 INNER JOIN score s2 ON
(s1.cid=s2.cid and s1.sid <> s2.sid and s1.sid='002')  GROUP BY s1.sid,s2.sid
 HAVING count(*) = (select count(*) from score where sid=s1.sid)
 and count(*) = (select count(*) from score where sid=s2.sid) ) sc );
登录后复制
相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
php - prepare与sql的开销?
来自于 1970-01-01 08:00:00
0
0
0
sql文件
来自于 1970-01-01 08:00:00
0
0
0
打印sql语句
来自于 1970-01-01 08:00:00
0
0
0
sql优化or
来自于 1970-01-01 08:00:00
0
0
0
mysql - sql报错原因?
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板