在sql server中的where语句之后使用(+)

时间:2011-01-09 19:20:42

标签: sql-server oracle tsql plsql

如何将以下pl sql转换为sql。 B.STATUS(+)=1在tsql中不起作用。

  Select * from A,B where A.ID=B.ID(+)
     WHERE B.STATUS(+)=1

这不会返回mssql中的行,因为它不理解B.STATUS是可选的

 Select * from A LEFT JOIN B ON A.ID=B.ID
WHERE B.STATUS=1

2 个答案:

答案 0 :(得分:5)

当条件应用于WHERE子句中的外部表时,OUTER JOIN将更改为INNER JOIN。在ON子句中,它保持为OUTER。

你需要推断谓词“in”

 Select * from A LEFT JOIN B ON A.ID = B.ID AND B.STATUS=1

OR

 Select * from
     A LEFT JOIN
     (SELECT * FROM B WHERE B.STATUS=1) B1 ON A.ID = B1.ID

答案 1 :(得分:0)

只需将其设为OR“(b.status = 1或b.status IS NULL)”