这句SQL语句怎么写?(50分)

  • 主题发起人 主题发起人 mhlang
  • 开始时间 开始时间
M

mhlang

Unregistered / Unconfirmed
GUEST, unregistred user!
Table A中有编号,规格和其它字段,但没有编号和规格都相同的记录,
Table B中也有编号,规格和其它字段,也没有编号和规格都相同的记录,
我想把Table A中编号与规格两项都不同于Table B的记录找出来,哪位
大哥可以帮我写一SQL语句。
 
select distinct a.*
from a
where bh+gg not in
(select bh+gg from b)
 
select *
from Table A
where 编号 not in (select distinct 编号 from Table B)
and 规格 not in (select distinct 规格 from Table B)
 
不行啊。试过了,一个记录都找不到。是我操作有误还是我的意思表达不清。
我是想:比如A中有编号为'8888',规格为'220V,100W'的记录,B中没有这样的记录,
我就要找出A的这个记录来
 
select *
from Table A
where 规格<>''
and 编号+规格 not in (select distinct 编号+规格 from Table B where 规格<>'')

 
smallbs写的是对的呀
 
select a.a,a.b
from a
where not exists (select * form a,b where a.a=b.a and a.b=b.a)
 
smallbs,cb422:
我又试过了,还是没有呵,没有报错,只是找到满足条件的记录数为0。
我的A表中的确有编号为'8215',名称为'计算器',规格为'有统计功能',
单位为....的记录,B表中则肯定没有编号为'8215',规格为'有统计功能'的
记录。事实上B表中的这两个字段最初就来自A表,均为文本型字段
(二表其他字段不同,为同一access 2000数据库中的两个表)
我也看懂你写的语句了,就是select不出A表中的这一记录。
再帮帮忙,或者要我再提供什么原材料
 
我发现了一点问题:两表中有些记录的规格字段均为空值,用
select *
from Table A
where 编号+规格 not in (select distinct 编号+规格 from Table B)
什么都找不到。如果将not去掉,改为
select *
from Table A
where 编号+规格 in (select distinct 编号+规格 from Table B)
则可以找到表中与B表编号及规格均相同的且规格字段不是空值的记录,
加上not,什么都找不到,为什么呀


 
的确试过了,当规格字段值不为空值时,上面这一句很好用,
当有规格字段值为空值时,这一句就不灵了
 
select *
from Table A
where 规格<>''
and 编号+规格 not in (select distinct 编号+规格 from Table B where 规格<>'')
注: 如 规格<>'' 不行,就用 规格>'' 试试
 
这回好多了,可是规格为空值的记录全都不出来
 
最后弄出来了。感谢smallbs在线帮助
 

Similar threads

回复
0
查看
1K
不得闲
回复
0
查看
978
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部