表a:
属性为:班级,学生帖号(主键),学生姓名(有全部的学生记录)
表b:
属性为:班级,学生帖号(主键),其他属性(有部分的学生记录)
现在想找出:
某一个班级当中在表A中有,但是表B中没有的学生.就是A班级-B班级

解决方案 »

  1.   

    create table #a(班级 varchar(100),学生帖号 varchar(100),学生姓名 varchar(100))
    create table #b(班级 varchar(100),学生帖号 varchar(100),其他属性 varchar(100))insert into #a(班级,学生帖号,学生姓名) values(1,1,'name1')
    insert into #a(班级,学生帖号,学生姓名) values(1,2,'name2')
    insert into #a(班级,学生帖号,学生姓名) values(1,3,'name3')insert into #b(班级,学生帖号,其他属性) values(1,1,'test1')--第一种方法
    select *
    from #a
    where 学生帖号 not in (select 学生帖号 from #b)--第二种方法
    select t1.*
    from #a t1 left join #b t2 on t1.学生帖号=t2.学生帖号
    where t2.学生帖号 is nulldrop table #a,#b
      

  2.   

    这样,是会把不是本班级学生都找出来了
    如:
     表A
       1班 张三 zhang(帐号) 
       1班 张三1 zhang1(帐号)
       1班 张三2 zhang2(帐号)
       2班 张三3 zhang3(帐号) 
       2班 张三4 zhang4(帐号)
       2班 张三5 zhang5(帐号)
    表B:
      1班 张三1 zhang1(帐号),其他
      2班 张三3 zhang3(帐号),其他
    现在只想找出:
       1班 张三 zhang(帐号) 
       1班 张三2 zhang2(帐号)
    或者:
      2班 张三4 zhang4(帐号)
       2班 张三5 zhang5(帐号
    其中班级要当参数的
      
      

  3.   


    create table #a(班级 varchar(100),学生帖号 varchar(100),学生姓名 varchar(100))
    create table #b(班级 varchar(100),学生帖号 varchar(100),其他属性 varchar(100))insert into #a(班级,学生帖号,学生姓名) values('1班','zhang','张三')
    insert into #a(班级,学生帖号,学生姓名) values('1班','zhang1','张三1')
    insert into #a(班级,学生帖号,学生姓名) values('1班','zhang2','张三2')
    insert into #a(班级,学生帖号,学生姓名) values('2班','zhang4','张三4')
    insert into #a(班级,学生帖号,学生姓名) values('2班','zhang5','张三5')insert into #b(班级,学生帖号,其他属性) values('1班','zhang1','其他')
    insert into #b(班级,学生帖号,其他属性) values('2班','zhang3','其他')declare @班级 varchar(100)
    set @班级='1班'
    --set @班级='2班'--第一种方法
    select *
    from #a
    where 学生帖号 not in (select 学生帖号 from #b where 班级=@班级)
        and 班级=@班级--第二种方法
    select t1.*
    from #a t1 left join #b t2 on t1.学生帖号=t2.学生帖号 
    where t2.学生帖号 is null
        and t1.班级=@班级drop table #a,#b
      

  4.   

    create table #A(班级 varchar(100),学生姓名 varchar(50),学生帖号 varchar(100))
    insert into #A select '1班','张三','zhang'
    union all select '1班','张三1','zhang1'
    union all select '1班','张三2','zhang2'
    union all select '2班','张三3','zhang3'
    union all select '2班','张三4','zhang4'
    union all select '2班','张三5','zhang5'
    gocreate table #B(班级 varchar(100),学生姓名 varchar(50),学生帖号 varchar(100),other varchar(8000))
    insert into #B select '1班','张三1','zhang1','other'
    union all select '2班','张三3','zhang3','other'
    godeclare @班级 varchar(100)
    set @班级 = '1班'
    select #A.* from #A left outer join #B on #A.学生帖号 = #B.学生帖号 where #B.学生帖号 is null and #A.班级 = @班级go
    drop table #A
    drop table #B
    go