27,579
社区成员
发帖
与我相关
我的任务
分享
select a.*
from a left join b
on a.ck=b.ck and a.lb=b.lb and a.bh=b.bh and a.gg=b.gg
where b.ck is null
--相同
select a.* , b.* from a,b where a.ck = b.ck and a.lb = b.lb and a.bh = b.bh and a.gg = b.gg
--不同
--效率高
select a.* from where not exists(select 1 from b where ck = a.ck and lb = a.lb and bh = a.bh and gg = a.gg)
--效率不高
select a.* from a where cast(ck as varchar) + ',' + cast(lb as varchar) + ',' + cast(bh as varchar) + ',' cast(gg as varchar) not in (select cast(ck as varchar) + ',' + cast(lb as varchar) + ',' + cast(bh as varchar) + ',' cast(gg as varchar) from b)
create table rishengwA
(
ck int ,
lb int ,
bh int ,
gg int ,
mm char ,
nn int
primary key(ck,lb,bh,gg)
)
create table rishengwB
(
ck int ,
lb int ,
bh int ,
gg int ,
dd int
primary key(ck,lb,bh,gg)
)
delete rishengwA
insert into rishengwA
select 1,2,3,4,'A',8 union all
select 1,2,3,5,'A',9 union all
select 1,2,3,6,'A',10 union all
select 1,2,3,7,'A',11 union all
select 1,2,3,8,'A',12 union all
select 1,2,3,9,'A',13
delete rishengwB
insert into rishengwB
select 1,2,3,4,8 union all
select 1,2,3,5,9 union all
select 1,2,3,6,10
select rishengwA.*
from rishengwA where cast(ck as varchar(10)) +cast(lb as varchar(10))+cast(bh as varchar(10))+cast(gg as varchar(10)) not in
(select cast(ck as varchar(10)) +cast(lb as varchar(10))+cast(bh as varchar(10))+cast(gg as varchar(10)) as id from rishengwB)
===========================
1 2 3 7 A 11
1 2 3 8 A 12
1 2 3 9 A 13
select a.* from a where cast(ck as varchar) + ',' + cast(lb as varchar) + ',' + cast(bh as varchar) + ',' cast(gg as varchar) not in (select cast(ck as varchar) + ',' + cast(lb as varchar) + ',' + cast(bh as varchar) + ',' cast(gg as varchar) from b)
select * from a
where not exists (
select 1 from b
where ck=a.ck and
lb=a.lb and
bh=a.bh and
gg=a.gg
)
select *
from a left join b
on a.ck=b.ck and a.lb=b.lb and a.bh=b.bh and a.gg=b.gg
where b.ck is null