语句1:select count(*)
from v_gzjbwl_fund_amabzzpay a
left join v_gzjbwl_fund_amabzzbankroll b on (a.member_code = b.member_code and a.fund_billnum = b.fund_billnum
and (b.dd_type_settlement <> '承兑汇票' or b.dd_type_settlement <> '商业承兑汇票')
and b.fund_billnum is not null);
语句2:
select count(*)
from v_gzjbwl_fund_amabzzpay a
left join v_gzjbwl_fund_amabzzbankroll b on (
(b.dd_type_settlement <> '承兑汇票' or b.dd_type_settlement <> '商业承兑汇票') and
a.member_code = b.member_code and a.fund_billnum = b.fund_billnum
and b.fund_billnum is not null);
结果分别为:
906040
822
这是oracle版块中的一个题目,想不通,以为lz在耍我们,呵呵,大家的意见呢
------解决方案--------------------
你试出来不一样了?
我看多半是运行错库了
------解决方案--------------------
- SQL code
select count(*)from v_gzjbwl_fund_amabzzpay a left join v_gzjbwl_fund_amabzzbankroll b on (a.member_code = b.member_code and a.fund_billnum = b.fund_billnumand (b.dd_type_settlement <> '承兑汇票' or b.dd_type_settlement <> '商业承兑汇票')and b.fund_billnum is not null);select count(*)from v_gzjbwl_fund_amabzzpay a left join v_gzjbwl_fund_amabzzbankroll b on ((b.dd_type_settlement <> '承兑汇票' or b.dd_type_settlement <> '商业承兑汇票') and a.member_code = b.member_code and a.fund_billnum = b.fund_billnumand b.fund_billnum is not null);
------解决方案--------------------
我刚才在SQL SERVER里作了个测试,如果把不表A或表B单方的条件加到left join的on里,对结果没有影响,不知道ORACLE里的是怎样。
建议还是把单方的条件放到where里比较保险
------解决方案--------------------
ORACLE的毕竟不懂 不妄加评论
------解决方案--------------------
光看这语句,应该不会查询出来不同吧!
貌似原来的LZ想说的是not in 三值逻辑中null的问题。
可这两个语句,如果给出结构的话,可以看到执行计划是一样的啊。
------解决方案--------------------
这样的事 真有点奇葩!!!
理论上应该是一样的
------解决方案--------------------
没区别