使用关键字vs ON子句 - MYSQL

Tec*_*hie 42 mysql sql

可能重复:
MySQL ON vs USING?

查询1:

SELECT *
FROM users
JOIN orders ON (orders.user_id = users.user_id)
WHERE users.user_id = 1;
Run Code Online (Sandbox Code Playgroud)

查询2:

SELECT *
FROM users
JOIN orders USING (user_id)
WHERE user_id = 1;
Run Code Online (Sandbox Code Playgroud)

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

ech*_*_Me 46

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

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

USING 在执行动态SQL时也使用.

例如,

EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num'
  USING dept_id; 
Run Code Online (Sandbox Code Playgroud)
  • USING条款:允许您指定名称的连接键.

  • ON子句:此语法允许您加入两个表中的主键指定的列名.

USING子句

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

ON条款

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