可能重复:
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
这两者有什么区别?
答案 0 :(得分:12)
他们完全一样,但我建议第二种方法是可读性和可维护性。
使用JOIN
可以将表格之间定义 relationship 的条件与结果集上过滤器的条件分开。
使用JOIN
可以更轻松地查看您是否缺少连接条件。
使用JOIN
,您可以轻松地在INNER
或OUTER JOIN
之间进行选择。逗号语法等同于INNER JOIN
(尽管某些数据库在使用第一种方法时确实有一个允许外连接的扩展名。)
最重要的是要保持一致。逗号语法与JOIN
关键字具有不同的优先级,如果您尝试在同一查询中混合使用这两种语法,则可能会导致混淆错误。由于第3点,如果您始终使用JOIN
,则更容易保持一致。
答案 1 :(得分:3)
内连接是ansi语法,应该是首选方法。
想象一下,如果您使用,
表示多个表,这个解决方案会变得多么丑陋?
SELECT * FROM orders, inventory, products, logistics, accounting, materials, ...
善待未来的开发人员,任何查看或维护此代码的人都使用JOIN
语法。
答案 2 :(得分:1)
逗号(,
)相当于CROSS JOIN
。使用明确的CROSS JOIN
更直观,更值得推荐,因为它可以轻松更改为LEFT JOIN
,RIGHT JOIN
等。使用CROSS JOIN
也符合ANSI标准。
答案 3 :(得分:-1)
它们在功能上是等同的。第二个是'更新'。