例如:
为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩要求实现如下5个处理:
  1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
  2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
  3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
  4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
  5. 查询选修了课程的学员人数
  6. 查询选修课程超过5门的学员学号和所属单位

解决方案 »

  1.   

    --1
    SELECT s#, sn
      FROM s
     WHERE s# IN (SELECT s# FROM sc WHERE c# IN (SELECT c# FROM c WHERE cn = '税收基础'));
    --2 
    SELECT sn, sd FROM s WHERE s# IN (SELECT s# FROM sc WHERE c# = 'C2');
    --3
    SELECT sn, sd FROM s WHERE s# NOT IN (SELECT s# FROM sc WHERE c# = 'C5');
    --4
    SELECT sn, sd
      FROM s
     WHERE s# IN (SELECT s# FROM sc GROUP BY s# HAVING COUNT(*) >= (SELECT COUNT(*) FROM c));
    --5
    SELECT COUNT(*) FROM s WHERE s# IN (SELECT s# FROM sc);
    --6
    SELECT sn, sd FROM s WHERE s# IN (SELECT s# FROM sc GROUP BY s# HAVING COUNT(*) > 5);
      

  2.   

    但是有时候就得用in,它比or 性能好些。
      

  3.   

    只是想让大家提供几道题,锻炼下自己的sql能力