我已经给出了两个查询。第一个查询是给出正确的输出(我正在使用sqlserver)。 第二个查询我想在Oracle中执行,但它不能正常工作。请给我正确的查询,我可以在oracle中使用哪一个。
SqlServer的:
select *
from branch a left outer join course b on a.courseid=b.courseid
where b.courseid is NULL
的Oracle :
select *
from branch a, course b
where a.courseid= b.courseid(+)
在oracle中,b.courseid为NULL的子句无效。
答案 0 :(得分:3)
您的标记表明您使用的是Oracle 10g。 Oracle已经支持the ANSI join syntax since 9i。因此,您在SQL Server中运行的查询也应该在Oracle环境中运行。
答案 1 :(得分:0)
首先,我在Oracle中使用相同的左外连接语法,而不是旧的专有(+)语法。 Oracle在其文档中提出了相同的建议。此语法有许多限制,不适用于标准ansi语法。
如果您决定使用Oracle join运算符,我不是百分百肯定,但我认为您需要执行以下操作:
select *
from branch a, course b
where a.courseid = b.courseid(+)
and b.courseid(+) is null;
自从我厌倦了Oracle join运算符以来,已经有很长一段时间了。
答案 2 :(得分:0)
假设您的Oracle查询是:
select *
from branch a, course b
where a.courseid= b.courseid(+) and
b.courseid is null
然后我认为这应该等同于SQL Server查询。您确定两个数据库中的数据是否相同?