是否使用JOIN?

时间:2011-10-26 18:29:02

标签: sql join

  

可能重复:
  INNER JOIN versus WHERE clause — any difference?
  SQL JOIN: is there a difference between USING, ON or WHERE?

例如,我有SQL声明:

SELECT *  
  FROM orders, inventory  
 WHERE orders.product = inventory.product

SELECT *  
  FROM orders  
  JOIN inventory  
    ON orders.product = inventory.product

这两者有什么区别?

4 个答案:

答案 0 :(得分:12)

他们完全一样,但我建议第二种方法是可读性和可维护性。

  1. 使用JOIN可以将表格之间定义 relationship 的条件与结果集上过滤器的条件分开。

  2. 使用JOIN可以更轻松地查看您是否缺少连接条件。

  3. 使用JOIN,您可以轻松地在INNEROUTER JOIN之间进行选择。逗号语法等同于INNER JOIN(尽管某些数据库在使用第一种方法时确实有一个允许外连接的扩展名。)

  4. 最重要的是要保持一致。逗号语法与JOIN关键字具有不同的优先级,如果您尝试在同一查询中混合使用这两种语法,则可能会导致混淆错误。由于第3点,如果您始终使用JOIN,则更容易保持一致。

答案 1 :(得分:3)

内连接是ansi语法,应该是首选方法。

想象一下,如果您使用,表示多个表,这个解决方案会变得多么丑陋? SELECT * FROM orders, inventory, products, logistics, accounting, materials, ...

善待未来的开发人员,任何查看或维护此代码的人都使用JOIN语法。

答案 2 :(得分:1)

逗号(,)相当于CROSS JOIN。使用明确的CROSS JOIN更直观,更值得推荐,因为它可以轻松更改为LEFT JOINRIGHT JOIN等。使用CROSS JOIN也符合ANSI标准。

答案 3 :(得分:-1)

它们在功能上是等同的。第二个是'更新'。