一条SQL语句面试题:求选修所有课程的学生
来源:互联网 发布:mac phpstorm 破解 编辑:程序博客网 时间:2024/06/06 03:20
注: 转自 http://blog.csdn.net/leftfist/article/details/44206081 仅供学习
前几天求职面试,有一道SQL题:给出三个表:学生、课程、成绩,求选修了所有课程的学生。
一道看似很简单的问题,把我难住了,我改了又改,涂涂画画,抓耳挠腮,因为试卷没有多少空白位置了,最后只好放弃。心情大受影响,尽管最后还是获得offer。
但是心中有愧呀!
于是在机器上试了试:
先建好表
- use test;
- go
- create table student(sno varchar(50) not null,name varchar(50) not null);
- insert into student(sno,name) values('001','张三');
- insert into student(sno,name) values('002','李四');
- insert into student(sno,name) values('003','王五');
- create table class(cno varchar(50) not null,name varchar(50) not null)
- insert into class(cno,name) values('c01','数据结构');
- insert into class(cno,name) values('c02','操作系统');
- insert into class(cno,name) values('c03','计算机组成原理');
- insert into class(cno,name) values('c04','网络基础');
- create table score(sno varchar(50) not null,cno varchar(50) not null,score decimal(18,2) not null)
- insert into score(sno,cno,score) values('001','c01',80);
- insert into score(sno,cno,score) values('001','c02',85);
- insert into score(sno,cno,score) values('001','c03',89);
- insert into score(sno,cno,score) values('001','c04',87);
- insert into score(sno,cno,score) values('002','c01',80);
- insert into score(sno,cno,score) values('003','c04',70);
我想到了三种写法:
1、
两个not exists。我当时是只写了一个。
由内嵌到外部,
1)不存在一门为当前学生所选修的课程
select 1 from class c where not exists(select 1 from score where sno=s.sno and cno=c.cno)
2)不存在 情况1),也就是不存在当前学生有没选修的课程这种情况
换言之,当前学生选修了所有的课程
2、
嵌套里面的语句是有未选修课程的学生然后外部是不在此名单内的学生
3、
0 0
- 一条SQL语句面试题:求选修所有课程的学生
- 一条SQL语句面试题:求选修所有课程的学生
- SQL查询选修了所有课程的学生姓名
- 面试题:用一条sql语句查询出“每门”课程都大于80分的学生姓名
- 求出选修了所有课程的学生姓名
- 数据库操作: 查询选修了所有课程的学生
- 一道SQL:至少选修了学生002选修的全部课程的学生编号
- 学生各门课程成绩统计SQL语句大全(面试题)
- SQL语句之查找一个表在另一个表上的所有映射(如学生在选课表上的所有映射,即查询选修所有课程的学生姓名)
- sql面试题:用一条SQL语句查出不重复的所有记录
- SQL学习(5)查询选修全部课程的学生
- SQL查询选修了全部课程的学生姓名解析
- SQL-EXIST-查询选修了全部课程的学生姓名
- 学生课程选修系统
- 学生选修课程系统
- 编写程序,查询所有学生选修课程的期末成绩和对应等级,如学生未选修任何课程 --则输出提示信息。用case选择结果
- "选修了全部课程的学生"的查询语句的疑问
- 如何理解 多个 exists sql(查询选修了全部课程的学生姓名)
- .htaccess使用详解
- 转载的计算大数的阶乘
- Windows 开发人员中心-桌面-入门-选择技术
- 单例模式
- [LeetCode] 032. Longest Valid Parentheses (Hard) (C++)
- 一条SQL语句面试题:求选修所有课程的学生
- IDEA快捷键使用技巧整理
- 2048中放置新数字位置算法分析
- android获取指定路径下目录文件
- Zero Turnaround releases Eclipse Optimizer
- iOS开发中@property的属性weak nonatomic strong readonly等介绍
- elasticsearch moreLikeThis查询应用
- HDU - 1789 Doing Homework again(贪心)
- android AIDL 小结