select * from goods,su,sa
where goods.goodsid=su.goodsid(+) and goods.goodsid=sa.goodsid(+) order by goods.goodsid;
我想请问一下,where子句中,两个外联查询条件之间用and连接,这个该怎么理解呢?我试了一下,用or不能代替and,否则会报错,这是为什么呢?
where goods.goodsid=su.goodsid(+) and goods.goodsid=sa.goodsid(+) order by goods.goodsid;
我想请问一下,where子句中,两个外联查询条件之间用and连接,这个该怎么理解呢?我试了一下,用or不能代替and,否则会报错,这是为什么呢?
and 是两边的等式都必须返回true,在表示这个等式是成立的,而or 的意思是只要有一个成立就可以了! 如果你正想用or 来写这条sql的话,可以修改成一下:
select *
from goods, su, sa
where (goods.goodsid = su.goodsid(+) or goods.goodsid = sa.goodsid(+))
order by goods.goodsid;
left outer join su on goods.goodsid=su.goodsid
left outer join sa on goods.goodsid=sa.goodsid
order by goods.goodsid; 改写成这样比较容易理解吧。你那种写法已经不推荐用。