3

下面哪个示例是内部连接的最佳实践?下面的示例非常简单,但是如果涉及多个表怎么办?你会选择哪种方法?

示例查询:

简单的

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers, orders
WHERE suppliers.supplier_id = orders.supplier_id;

使用关键字 INNER JOIN

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
INNER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;
4

3 回答 3

6

自 1992 年以来ANSI推荐该JOIN符号,并且关于可读性,这是我推荐使用的。

关于这个主题的一切都已经说了,但我只想提醒一下,从逻辑的角度来看,将连接条件与值过滤器分开更有意义,原因有两个:

  • 这根本不是一回事
  • Oracle 在内部(可能还有 mysql,即使我真的不知道)首先计算中间记录集,然后应用WHERE过滤器。
于 2013-04-10T13:46:09.320 回答
0

我建议明确说明 JOIN 类型并使用 ON 子句。 但是你需要正确使用它。在您的示例中,您忘记包含 FROM 子句和供应商表。

SELECT suppliers.supplier_id, 
       suppliers.supplier_name, 
       orders.order_date
  FROM suppliers s INNER JOIN 
       orders o ON s.supplier_id = o.supplier_id;
于 2013-04-10T13:46:16.567 回答
0

就功能而言,WHERE 和 JOINS 是相同的..

于 2013-04-10T13:48:00.027 回答