【问题标题】:Oracle and SQL Server select (+) equivalentOracle 和 SQL Server 选择 (+) 等效项
【发布时间】:2012-06-15 04:49:11
【问题描述】:

在甲骨文我有:

SELECT t2.Regkood, t2.naitatel, t2.naitafaks, t3.lahtiolekuaeg, t1.*
FROM table1 t1, table2 t2, table3 t3
WHERE t1.client = t2.client AND t1.client = t3.client(+) AND t1.client = 414246

如何在 SQL Server 中获得相同的结果?

谢谢

【问题讨论】:

  • :使用LEFT OUTER JOIN 语法
  • 您不应该在 Oracle 中使用 (+)。使用标准的JOIN 语法。

标签: sql-server oracle select outer-join


【解决方案1】:
SELECT t2.Regkood, 
       t2.naitatel, 
       t2.naitafaks, 
       t3.lahtiolekuaeg, 
       t1.* 
FROM   table1 t1 
       INNER JOIN table2 t2 
               ON t1.client = t2.client 
       LEFT JOIN table3 t3 
               ON t1.client = t3.client 
WHERE  t1.client = 414246 

了解连接的一些示例:

ORACLE 中的左外连接

SELECT *
FROM A, B
WHERE A.column = B.column(+)

ORACLE 中的右外连接

SELECT *
FROM A, B
WHERE A.column(+)=B.column

【讨论】:

  • @Romil : 只是出于兴趣,请您解释一下 + 符号在 Oracle 中代表什么?
  • 在以前版本的oracle(我们使用+)和sql server(我们使用*)来表示左连接或右连接。
  • 您的两个 Oracle 联接是等效的 (A LEFT JOIN B)。如果你想写A RIGHT JOIN B,你会写这样的东西:SELECT * FROM A,B WHERE A.column (+) = B.column
  • 恐怕我的页面上看不到这样的东西:|
猜你喜欢
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2012-09-04
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 2014-05-30
相关资源
最近更新 更多