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
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
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
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
如:
表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(帐号
其中班级要当参数的
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
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