我的分分不多了,却又不知道这条查询语句怎么写啊!!

cqnucsmoon 2003-10-16 10:32:17
有两个表:
表一结构 (表名:B1)
字段:A B C .....其它字段

表一中的数据是已经设置好了的不再变了的


表二结构 (表名:B2)
字段:A B C .....其它字段(与表一不同了)
现在我想找出表二中所有满足以下条件的记录:
如果B2.A=B1.A但B2.B的值却不在B1.B值中;

如果B2.A=B1.A且B2.B=B1.B值,但B2.C的值又不在B1.C中

不知道行不?

...全文
51 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
PCHOMEFAY 2003-10-21
  • 打赏
  • 举报
回复
当两个子查询结果的结构一致时,可以让这两个子查询执行并、交、差操作。运算符分别为UNION 、INTERSECT 、EXCEPT

(select 查询语句1)
UNION
(select 查询语句2)
PCHOMEFAY 2003-10-21
  • 打赏
  • 举报
回复
如果 from子句中包含2个表 这表示这2个表做 笛卡儿积 是会产生重复记录的。

看看下面的句子能否执行,我没有调试过,仅供参考。

select * from b2 where b2.a in (select a from b1) and b2.b not in (select b from b1)

Gelim 2003-10-21
  • 打赏
  • 举报
回复
up
sword281 2003-10-21
  • 打赏
  • 举报
回复
如果是两个单独的语句就将union拆开作为两个sql语句
sword281 2003-10-21
  • 打赏
  • 举报
回复
你说有重复的记录存在举人例子出来让我们大家看看,到底重复在何处也好让大家共同分析分析
luzufu 2003-10-16
  • 打赏
  • 举报
回复
cqnucsmoon同志,分析你的要求,你想B2.A=B1.A但B2.B的值却不在B1.B值中,B2.A=B1.A且B2.B=B1.B值,这两个条件连起来就是B2.A=B1.A 不管B2.B和B1.B是否相等。所以你可以
select a,b,(select c from b1,b2 where b2.b=b1.b and b1.c<>b2.c) as c ....
from b2
rexyudl 2003-10-16
  • 打赏
  • 举报
回复
select * from b2 where b2.a=b1.a and b2.b not in(select b1.b from b1)
select * from b2 where b2.a=b1.a and b2.b=b1.b and b2.c not in(select b1.c from b1)
cqnucsmoon 2003-10-16
  • 打赏
  • 举报
回复
sword281() :您的语句也有同样的问题,一条记录要重复好多次哦
cqnucsmoon 2003-10-16
  • 打赏
  • 举报
回复
rexyudl(隼):提示错误为:
所编写的一个子查询可在不在主查询的FROM子句中使用的
EXISTS保留字的情况下返回多个字段.修改子句的SELECT 查询以只要求返回一个字段

我不明白啊
sword281 2003-10-16
  • 打赏
  • 举报
回复
select * from b1,b2 where (b1.a=b2.a and b2.b not in (select b1.b from b1))
union
select * from b1,b2 where (b1.a=b2.a and b2.b=b1.b and b2.c not in(select b1.c from b1))
rexyudl 2003-10-16
  • 打赏
  • 举报
回复
如果1:select * from b2 where b2.a=b1.a and b2.b not in(select * from b1)
如果2:select * from b2 where b2.a=b1.a and b2.b=b1.b and b2.c not in(select * from b1)
cqnucsmoon 2003-10-16
  • 打赏
  • 举报
回复
楼上的,这样选择出来的有很多重复的记录啊?
snail2011 2003-10-16
  • 打赏
  • 举报
回复
select * from b1,b2 where (b1.a=b2.a) or (b1.a=b2.a and b1.b=b2.b)
strongfisher 2003-10-16
  • 打赏
  • 举报
回复
select * from b1,b2 where (b1.a=b2.a and b1.b<>b1.b) or (b1.a=b2.a and b1.b=b1.b and b1.c<>b2.c)
cqnucsmoon 2003-10-16
  • 打赏
  • 举报
回复
select * from b2 where b2.a=b1.a and b2.b not in(select b1.b from b1)
我在执行上面的语句的时候提示说至少有一个参数没有指定,可是加上b1之后就没有问题了
如下:

select * from b2,b1 where b2.a=b1.a and b2.b not in(select b1.b from b1)
cqnucsmoon 2003-10-16
  • 打赏
  • 举报
回复
楼上的哥哥们,我说的两果如果需要写成两个单独的SQL语句执行,不是合在一起的
而且你们所说的语句执行的时候都会出现重复的记录

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧