Sql 从Oracle到ANSI外部联接的转换
我必须用Oracle外部连接符号(+)将许多SQL查询重写为ANSI SQL。我读了一些关于Oracle语法的书,但是有一些非常简单的例子。这个查询应该如何用ANSI符号表示Sql 从Oracle到ANSI外部联接的转换,sql,oracle,outer-join,ansi-sql,Sql,Oracle,Outer Join,Ansi Sql,我必须用Oracle外部连接符号(+)将许多SQL查询重写为ANSI SQL。我读了一些关于Oracle语法的书,但是有一些非常简单的例子。这个查询应该如何用ANSI符号表示 SELECT * FROM realtion r1, relation r2 WHERE r1.relno=r2.relno(+) AND r.id(+)=10 或 在第一个查询中,您有别名r,我猜它是r2 SELECT * FROM realtion r1 left join relation r2 on r1.re
SELECT * FROM realtion r1, relation r2 WHERE r1.relno=r2.relno(+) AND r.id(+)=10
或
在第一个查询中,您有别名r,我猜它是r2
SELECT * FROM realtion r1
left join relation r2 on r1.relno=r2.relno AND r2.id=10
如果r2.id不是联接的一部分:
SELECT * FROM realtion r1
left join relation r2 on r1.relno=r2.relno
WHERE r2.id=10 or r2.id is null
和(我猜m.status不是加入的一部分)
第一个查询(假设您所说的r.ID
是指r2.ID
):
第二个问题:
SELECT *
FROM Mail M
INNER JOIN Code C
ON C.id = M.usrID
LEFT OUTER JOIN Relation R
ON r.relo = m.item AND
R.item = m.att
WHERE M.STATUS = 2
共享和享受。第一个查询似乎写得不正确-您的
r.id(+)=10
但是没有别名为“r”的表。
SELECT * FROM Mail M
inner join Code C on m.usrID = c.id
left join Relation R on m.item = r.relo and m.att = r.item
WHERE M.STATUS = 2
SELECT *
FROM realtion r1
LEFT OUTER JOIN relation r2
ON r2.relno = r1.relno AND
r2.id = 10
SELECT *
FROM Mail M
INNER JOIN Code C
ON C.id = M.usrID
LEFT OUTER JOIN Relation R
ON r.relo = m.item AND
R.item = m.att
WHERE M.STATUS = 2