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

left join顺序不同,竟然结果不同,会吗,怎么解释

2012-08-29 
left join顺序不同,竟然结果不同,会吗,如何解释?语句1:select count(*)from v_gzjbwl_fund_amabzzpay alef

left join顺序不同,竟然结果不同,会吗,如何解释?
语句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的问题。
可这两个语句,如果给出结构的话,可以看到执行计划是一样的啊。


[解决办法]
这样的事 真有点奇葩!!!
理论上应该是一样的
[解决办法]
没区别

热点排行