【问题标题】:Oracle Style Joins in SQL ServerSQL Server 中的 Oracle 样式联接
【发布时间】:2011-11-24 01:41:59
【问题描述】:

有没有办法在 SQL Server 中进行 oracle 样式的联接?

select * 
from t1, t2
where t1.id = t2.id (+)

编辑

为什么最好使用“左外连接”和“内连接”类型?我发现阅读旧形式更容易,尤其是涉及复杂的表连接时。

【问题讨论】:

  • old school/unrecommended equivalent for SQL Server would be =*。无论哪种情况,语法都适用于 OUTER 连接。
  • =* 样式的联接也已被弃用,并且在 SQL Server 2012 中将不再起作用。
  • 旧式连接不明确,可能会根据 WHERE 的应用方式返回不同的结果。这就是它们被逐步淘汰 ANSI SQL 标准以及 SQL Server 弃用它们的原因。

标签: sql sql-server oracle


【解决方案1】:

Microsoft 正在使用 ANSI ISO SQL 标准。 Mark Rittman 对ANSI joins and why you should use them 有很好的解释。但是,SQL Server 不支持该文章中列出的 NATURAL JOIN 语法和 ANSI 标准。您可能更熟悉旧的 Oracle 语法,但它是标准并且您会在其他数据库产品中找到。

回答您的问题 - 无法在 SQL Server 上执行 Oracle 样式的联接。甚至 *==* 样式的连接也已被弃用,并且在产品的下一版本中将被完全删除。

【讨论】:

    【解决方案2】:
    SELECT *
    FROM t1
    LEFT OUTER JOIN t2 ON t1.id = t2.id
    

    这篇AskTom 文章向您展示了 Oracle 的从 (+) 到 (LEFT AND RIGHT) OUTER JOIN 的语法等效项,而 SQL Server 使用 OUTER JOIN 语法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2019-04-21
      • 2011-03-14
      • 2017-04-27
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多