USING关键字与ON子句 - MYSQL

22 浏览
0 Comments

USING关键字与ON子句 - MYSQL

可能是重复的问题:

MySQL ON vs USING?

查询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;

我想要连接订单和用户表以获取一些特定的数据。它可以正常工作。我的问题是,由于两个查询输出相同的结果集,它们是相同的吗?哪个更有效率?哪个对性能更好?哪个是最佳实践?

0
0 Comments

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

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

USING子句还可用于执行动态SQL,例如:

EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num'
  USING dept_id; 

USING子句:允许您通过名称指定连接键。

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

USING子句用于在多个列具有相同名称但您不希望使用所有这些公共列进行连接时使用。在语句中,USING子句中列出的列不能有任何限定符,包括WHERE子句。

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

0