54

可能重复:
MySQL ON vs USING?

查询一:

SELECT *
FROM users
JOIN orders ON (orders.user_id = users.user_id)
WHERE users.user_id = 1;

查询 2:

SELECT *
FROM users
JOIN orders USING (user_id)
WHERE user_id = 1;

我想加入订单和用户表以获取某些数据。它工作正常。我的问题是因为两个查询都输出相同的结果集,是一样的吗?使用哪一种效率更高?哪一个对性能好?哪一个是最佳实践?

4

1 回答 1

63

当我们从多个表中检索数据时,该USING子句是我们不需要在条件中提及的内容。JOIN当我们使用USING子句时,该特定列名应该出现在两个表中,并且SELECT查询将使用USING子句中给定的列名自动连接这些表。

例如,如果表中有两个公共列名,则在USING子句中提及所需的公共列名。

USING在执行动态 SQL 时也会使用,如下所示:

EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num'
  USING dept_id; 
  • 子句:这USING允许您按名称指定连接键。

  • 子句:此语法允许您为两个表中的ON连接键指定列名。

USING 子句

USING如果多个列共享相同的名称但您不想使用所有这些公共列连接,则使用该子句。USING 子句中列出的列在语句中不能有任何限定符,包括 WHERE 子句。

ON 子句

ON子句用于连接两个表中列名不匹配的表。连接条件从 WHERE 子句中的过滤条件中删除。

于 2012-12-06T18:47:05.560 回答