admin

使用关键字vs ON子句-MYSQL

sql

查询1:

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;

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


阅读 194

收藏
2021-05-10

共1个答案

admin

从多个表中检索数据时,该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子句中的过滤条件中删除。

2021-05-10