有3张表,分别为    student学生表:sid(学号,number),sname(姓名,varchar2);    class课程表:cid(课程号,number),cname(课程名称,varchar2);    score成绩表:sid,cid,score(成绩,number),re(备注,varchar2)。
将成绩表中sid未曾在student或cid未曾在class表出现过的记录删除;

解决方案 »

  1.   

    delete from student where student.sid not in (select sid from score);
    --或者
    delete from class where class.cid not in (select cid from score);
      

  2.   

    --方法1:使用exists(推荐)
    delete from score sc
     where not exists (select 1 from student st where st.sid = sc.sid)
        or not exists (select 1 from class cl where cl.cid = sc.cid);--方法2:使用in
    delete from score sc
     where sc.sid not in (select st.sid from student st)
        or sc.cid not in (select c1.cid from class cl);