【问题标题】:Difference in SQL server INNER JOIN syntax? [duplicate]SQL server INNER JOIN 语法的区别? [复制]
【发布时间】:2013-12-02 04:50:25
【问题描述】:

我来自 Postgres/MySQL 世界,所以想知道 SQL 服务器中这两个查询之间是否有区别:

SELECT e.employee_id, s.salary
FROM employees e INNER JOIN salaries s
ON e.employee_id = s.employee_id


SELECT e.employee_id, s.salary
FROM employees e, salaries s
WHERE e.employee_id = s.employee_id

【问题讨论】:

  • 第二种是较旧的语法,称为隐式连接。第一个是现代的、首选的显式连接语法。它们在功能上是相同的
  • Postgres 和 MySQL(以及 Oracle 和 DB2 和 Firebird 等等)支持完全相同类型的连接。这对 SQL Server 来说没什么特别的(但要坚持使用显式连接)
  • 嗯.. 猜我是老派 b/c 我一直习惯于第二个。我发现很难改掉旧习惯,所以只要我能摆脱它,我就会坚持第二个。

标签: sql sql-server


【解决方案1】:

这些应该做同样的事情。第一个是首选语法,因为它是显式连接,可以使您的代码更易于阅读!

【讨论】:

    【解决方案2】:

    正如 Michael Berkowski 所说,结果是一样的。第二种是较旧的方法

    【讨论】:

      【解决方案3】:

      两者在功能上没有区别。后者(称为隐式连接)被认为是过时的,通常不受欢迎。

      【讨论】:

        【解决方案4】:

        新的连接语法是由SQL-92 引入的,并且现在受到 SQL Server(至少可以追溯到 SQL Server 2000)和大多数其他 DBMS 的支持。在性能方面,它们是等效的,但通常我建议新代码使用新的 SQL-92 语法。

        【讨论】:

          猜你喜欢
          • 2012-10-02
          • 1970-01-01
          • 2021-05-17
          • 2010-10-08
          • 2020-03-07
          相关资源
          最近更新 更多