关于sql:是否使用JOIN?

Whether to use JOIN or not?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
INNER JOIN versus WHERE clause — any difference?
SQL JOIN: is there a difference between USING, ON or WHERE?

例如,我有一个SQL声明:

1
2
3
SELECT *  
  FROM orders, inventory  
 WHERE orders.product = inventory.product

1
2
3
4
SELECT *  
  FROM orders  
  JOIN inventory  
    ON orders.product = inventory.product

这两者有什么区别?


它们的作用完全相同,但我建议使用第二种方法来提高可读性和可维护性。

  • 使用JOIN可以将定义表之间关系的条件与结果集过滤器的条件分开。

  • 使用JOIN可以更容易地查看是否缺少联接条件。

  • 使用JOIN可以方便地在INNEROUTER JOIN之间进行选择。逗号语法相当于INNER JOIN(尽管有些数据库在使用第一种方法时有一个扩展来允许外部联接)。

  • 最重要的是要对你使用的内容保持一致。逗号语法与JOIN关键字的优先级不同,如果试图在同一查询中混合两个语法,则可能导致混淆错误。由于第3点的原因,如果始终使用JOIN,则更容易保持一致。


  • 内部联接是ANSI语法,应该是首选方法。

    想象一下,如果将,与say many表一起使用,这个解决方案会变得多么难看?埃多克斯1〔15〕

    善待您未来的开发人员,以及任何关注或维护此代码的人,使用JOIN语法。


    逗号(,相当于CROSS JOIN。使用一个明确的CROSS JOIN是更直观和推荐的,因为它可以很容易地更改为LEFT JOINRIGHT JOIN等。使用CROSS JOIN也是符合ANSI的。


    它们在功能上是等效的。第二个是"更新的"。