读书人

请问sql高手

发布时间: 2012-01-14 20:02:35 作者: rapoo

请教sql高手
select x.*.y.* from (select a,b from t) x,(select a,b from t2)y
按照上面的写法,当y表中无记录x表中有记录 或 y表中有记录x表中无记录时,整个语句不返回值,也就是说只要其中一个表无记录整个语句就不返回值。

现在的想只要x表或y表其中任何表存在记录时,就要显示字段出来,语句该怎么写?

[解决办法]
照你的写法,只要有任何纪录,就会显示的啊,而且数据重复和会很多噢
[解决办法]
用两句比较容易解决
select x.* .y.*
from (select a, b from t) x
left join (select a, b from t2) y on x.a = y.a
where (select count(*) from (select a, b from t)) >
(select count(*) from select a, b from t2
));

select x.* .y.*
from (select a, b from t) x
right join (select a, b from t2) y on x.a = y.a
where (select count(*) from (select a, b from t)) <
(select count(*) from select a, b from t2
));
[解决办法]
用full outer join on 1=1来解决。
[解决办法]
SQL> select * from t;

A B
-------------------- --------------------
a b

SQL> select * from t2;

未选定行

SQL> select x.*,y.* from
2 (select a,b from t) x full outer join
3 (select a,b from t2) y on 1=1;

A B A
-------------------- -------------------- --------------------
B
--------------------
a b


读书人网 >oracle

热点推荐