首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

两个表关联查询解决思路

2012-03-02 
两个表关联查询有两个表AB表A字段A1字段A2字段A3字段A4001123214002112233表B字段B1字段B2字段B3字段B4001

两个表关联查询
有两个表   A   B
表A
字段A1   字段A2   字段A3   字段A4
001           12           32           14
002           11           22           33

表B
字段B1   字段B2   字段B3   字段B4
001           12           32           14
003           10           12           10

表A与表B的关联字段为   '字段A1   与   字段B1 '

我想查询的结果是:表A中有的记录而表B中没有   用   left   join   ......on   如何实现?
谢谢!(如果有其他好的方法也行   但not   in语句除外)

[解决办法]
try


Select
A.*
From
A
Left Join
B
On A.A1 = B.B1
Where B.B1 Is Null
[解决办法]
select * from 表a a left join 表b b
on a.字段a1=b.字段b1
[解决办法]
如果字段都是char或varchar

select * from 表A where 字段A1+ 字段A2+ 字段A3+ 字段A4 not in
(select 字段A1+ 字段A2+ 字段A3+ 字段A4 from b)
[解决办法]
或者用checksum
[解决办法]
lz说了不用not in
[解决办法]
那種寫法不好
[解决办法]
這麼寫吧

create table #t1(A1 varchar(10),A2 varchar(10),A3 varchar(10))
insert #t1
select '001 ', '10 ', '13 '
union all
select '002 ', '11 ', '13 '
union all
select '003 ', '10 ', '14 '
union all
select '005 ', '11 ', '55 '
go
create table #tt1(B1 varchar(10),B2 varchar(10),B3 varchar(10))
insert #tt1
select '001 ', '10 ', '13 '
union all
select '004 ', '11 ', '13 '
union all
select '003 ', '10 ', '14 '
union all
select '005 ', '02 ', '01 '

select #t1.* from #t1 left join #tt1 on #t1.A1=#tt1.B1 and A1 = B1 And A2 =B2 And A3=B3 where #tt1.B1 is null
drop table #t1
drop table #tt1
[解决办法]
select *
from 表A
where not exists(select *
from 表B
where 表B.字段B1 = 表A.字段A1)

热点排行