它们的结果不同的,不过我想第二条应该是你想要的
你的第一条结果是:只要存在一个test1.a= test2.b,查询结果就全是空
你的第二条结果是:test1.a中的值中能在test2.b找到对应值的被丢弃,不能找到对应值的被选择。
跟第二条结果对应的类似第一条格式的语句应该是:
select a.a from test1 a where not exists (select 1 from test2 b where b.b = a.a);
你的第一条结果是:只要存在一个test1.a= test2.b,查询结果就全是空
你的第二条结果是:test1.a中的值中能在test2.b找到对应值的被丢弃,不能找到对应值的被选择。
跟第二条结果对应的类似第一条格式的语句应该是:
select a.a from test1 a where not exists (select 1 from test2 b where b.b = a.a);
解决方案 »
- SQL语句
- oracle developer、forms 6i 和form builder什么关系?
- 有没有人做过smallfile,bigfile,asm的性能比对,共享下测试结果,谢谢!
- 高手请进:一个要求很简单,但是很难的写的SQL语句
- 有没办法快速的把记住公司数据库各个表的功能与相关存储功能等
- 再谈权限设计(含具体需求)
- 急!如何在win2003下安装oracle 8.1.7?
- PUBLIC和CTXSYS等的table怎样才能对普通user隐蔽?为何什么权限也没有的user也可以select这些表?
- ceil() 怎么个用法?
- Oracle update的相关问题
- 请教:pl/sql问题
- [求助]在VB6用ADO访问Oracle临时表总是为空记录
不过这两句是有很大差别的,对于第二句如果b.b确实有空值存在,并且数量大于你的结果集,结果可能是一样的,如果没有空值存在,你的结果集就不正确了。因为你的d.b is null
是作为一个查询条件设定的
我用的是一个左关联 当然会存在null值