查询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;
我想加入订单和用户表以获取某些数据。它工作正常。我的问题是,由于两个查询都输出相同的结果集,是否一样?使用哪一种效率更高?哪一个对性能有好处?最佳做法是哪一种?
从多个表中检索数据时,该USING子句在这种JOIN情况下无需提及。当我们使用USING子句时,两个表中都应存在该特定的列名,并且SELECT查询将使用该USING子句中的给定列名自动联接这些表。
USING
JOIN
SELECT
例如,如果表中有两个公共列名,则在USING子句中提及所需的公共列名。
USING 在执行动态SQL时也会使用,如下所示:
EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num' USING dept_id;
该USING子句:这允许你指定连接的名称键。
该ON子句:此语法允许您加入两个表中的主键指定的列名。
ON
USING子句
USING如果多个列共享相同的名称,但您不想使用所有这些公共列进行联接,则使用该子句。USING子句中列出的列可以在语句中具有任何限定符,包括WHERE子句。
ON子句
该ON子句用于连接两个表中列名都不匹配的表。连接条件从WHERE子句中的过滤条件中删除。