select * from bkht.tab_scan a full join bkht.tab_bill b on a.BILL_CODE=b.bill_code where a.BILL_CODE='10001';帮我转换成子查询或其它方式查询````要求不用join 谢谢```为什么不用join?答案是: 我是有苦说不出哈```能帮我解决的``我会非常感谢哈!
select * from bkht.tab_scan a , bkht.tab_bill b where a.BILL_CODE='10001'and a.BILL_CODE=b.bill_code ;full join不好搞
我不太清楚你为什么一定要用full join ,我提出几种假设。不过从你写的SQL上来看,是B表才会缺失数据。 第一。如果你只可能是B中会缺少记录,那么使用 select * from bkht.tab_scan a , bkht.tab_bill b where a.BILL_CODE='10001'and a.BILL_CODE=b.bill_code(+) ; select * from bkht.tab_scan a , bkht.tab_bill b where a.BILL_CODE='10001' and (b.bill_code='10001' or b.bill_code is null);
我同意laorer的写法,因为lz的sql后面有个where过滤
就使用右连接 select * from bkht.tab_scan a , bkht.tab_bill b where a.BILL_CODE='10001'and a.BILL_CODE=b.bill_code(+) ;
select * from bkht.tab_scan a where exists (select * from bkht.tab_bill b where a.bill_code=b.bill_code) and a.bill_code='10001'
晕,laorer那个是内连接,缺失了很多数据
select * from bkht.tab_scan a where exists (select * from bkht.tab_bill b where a.bill_code=b.bill_code) and a.bill_code='10001'
select a.* from bkht.tab_scan a where a.bill_code='10001' union select a.* from bkht.tab_scan a,bkht.tab_bill b where a.bill_code = b.bill_code因为union暗含了distinct,所以重复数据会帮你剔除掉,而union all会保留重复数据
楼主【studyfreshbirdhard】截止到2008-07-15 15:07:22的历史汇总数据(不包括此帖):
发帖的总数量:3 发帖的总分数:90 每贴平均分数:30
回帖的总数量:10 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:3 结贴的总分数:90
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
from bkht.tab_scan a , bkht.tab_bill b
where a.BILL_CODE='10001'and a.BILL_CODE=b.bill_code ;full join不好搞
第一。如果你只可能是B中会缺少记录,那么使用
select *
from bkht.tab_scan a , bkht.tab_bill b
where a.BILL_CODE='10001'and a.BILL_CODE=b.bill_code(+) ;
select *
from bkht.tab_scan a , bkht.tab_bill b
where a.BILL_CODE='10001' and (b.bill_code='10001' or b.bill_code is null);
select *
from bkht.tab_scan a , bkht.tab_bill b
where a.BILL_CODE='10001'and a.BILL_CODE=b.bill_code(+) ;
select * from bkht.tab_scan a where exists (select * from bkht.tab_bill b where a.bill_code=b.bill_code) and a.bill_code='10001'
晕,laorer那个是内连接,缺失了很多数据
where exists
(select * from bkht.tab_bill b where a.bill_code=b.bill_code)
and a.bill_code='10001'