【sql: 练习题8】查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息

题目:查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息

分析:我们可以先在student_score 表中 查找学号为01 的学生的学习记录,然后再查所有记录的course in 里面

就得到一个具有学生id的结果集,在查学生信息表,拿到学生信息

于是sql 有:

SELECT * FROM student,
    (SELECT DISTINCT student_score.studentid FROM student_score WHERE courseid IN
           (SELECT courseid FROM student_score WHERE studentid = 01))b
WHERE student.id = b.studentid

原文地址:https://www.cnblogs.com/yuanyuan2017/p/11327190.html

时间: 2024-11-05 19:33:18

【sql: 练习题8】查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息的相关文章

50个查询系列-第11个查询:查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;

select distinct( tblstudent.StuId) from tblstudent , tblscore where tblscore.CourseId in ( select tblscore.CourseId from tblscore where tblscore.StuId='1001' ) and tblstudent.StuId=tblscore.StuId 答案提供两种方法: 1: Select DistInct st.StuId,StuName From tbl

50道sql练习题和答案

最近两年的工作没有写过多少SQL,感觉水平下降十分严重,网上找了50道练习题学习和复习 原文地址:50道SQL练习题及答案与详细分析 1.0数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表 Teacher(TId,Tname) --TId 教

sql练习题(2)

-- 11.查询没有学全所有课程的同学的信息 -- 解法一:所学课程数量 < 课程数量 SELECT s.* FROM student s LEFT JOIN score s1 ON s.`s_id` = s1.`s_id` GROUP BY s1.`s_id` HAVING COUNT(s1.`c_id`) < (SELECT COUNT(1) FROM course) -- 解法二 SELECT * FROM student WHERE s_id NOT IN( SELECT s_id F

接近50道经典SQL练习题,附建表SQL解题SQL

说明 本文章整理了47道常见sql联系题,包括建表语句,表结构,习题列表,解题答案都涵盖在本文章内.文末提供了所用SQL脚本下载链接.所有解题答案都是本人自己写的,广大读者如果在阅读使用中,有任何问题欢迎留言,对我写的有问题的,欢迎指正,谢谢. 数据库:oracle11g 表结构 可使用plsql-工具-导入表,导入如下sql脚本. 表结构与数据.sql 学生表 Student(SId,Sname,Sage,Ssex)SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别

另一套Oracle SQL练习题

题干: 1 create table student( 2 sno varchar2(10) primary key, 3 sname varchar2(20), 4 sage number(2), 5 ssex varchar2(5) 6 ); 7 create table teacher( 8 tno varchar2(10) primary key, 9 tname varchar2(20) 10 ); 11 create table course( 12 cno varchar2(10)

【sql 练习题 36,37】查询每门功成绩最好的前两名,统计每门课程的学生选修人数(超过 5 人的课程才统计)

题目36:查询每门功成绩最好的前两名 分析:先用自己交自己,条件为a.courseid = b.courseid and a.score<b.score,其实就是列出同一门课内所有分数比较的情况. 通过a.studentid和a.courseid可以联合确定这个同学的这门课的这个分数究竟比多少个其他记录高/低, 如果这个特定的a.studentid和a.courseid组合出现在这张表里的次数少于2个,那就意味着这个组合(学号+课号+分数)是这门课里排名前二的. 所以下面这个计算中having

SQL查询出每门课都大于80 分的学生姓名

Course表如下: 查询出每门课都大于80 分的学生姓名有两种方法. 1.select  distinct name from Course where name not in (select distinct name from Course where score<=80) 2.select  name    from Course group by name having min(score)>80

经典SQL练习题

今天在网上找了几道经典的SQL练习题做了一下,虽然都不难,但是对打基础是很有好处的,在明白的基础上可以进一步做分析,来研究一下各种解法的优劣,甚至进行简单的优化..现在将题目和答案分享一下.我使用的是MYSQL 5.0,但是绝大部分都是标准SQL.表结构:CREATE TABLE STUDENT(SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL, SBIRTHDAY DATETIME,CLASS

(转)经典SQL练习题

今天在网上找了几道经典的SQL练习题做了一下,虽然都不难,但是对打基础是很有好处的,在明白的基础上可以进一步做分析,来研究一下各种解法的优劣,甚至进行简单的优化..现在将题目和答案分享一下.我使用的是MySQL 5.0,但是绝大部分都是标准SQL.表结构:CREATE TABLE STUDENT(SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL, SBIRTHDAY DATETIME,CLASS