在SQL中ON子句和USING子句之间的区别
USING子句:
1.此语法允许您指定名称的连接键(一种语法糖).
2.如果多个列共享相同的名称,但不想使用所有这些公共列进行连接,则使用USING子句;
3.USING子句中列出的列在语句中不能包含任何限定符,包括WHERE子句:
ON子句:
1.此语法允许您加入主键指定的列名这两个表.
2.ON子句用于连接两个表中列名不匹配的表.在语句中可以包含限定符,而且可以从WHERE子句中的过滤条件中删除连接条件:
SELECT department_name, city FROM departments JOIN locations USING (location_id); -- 为联接的表指定相同的列名。 SELECT department_name, city FROM departments dept JOIN locations loc ON (dept.location_id = loc.id); -- 为联接的表指定不同的列名。
除上面的答案之外
一个重要的区别是ON子句分别保留每个连接表中的列,USING子句将连接表中的列合并为一个列.例如,如果您希望仅在其中一个连接表中不存在匹配的行时保留结果集中的行,这可能很重要.为此,您通常使用OUTER JOIN以及WHERE子句中的条件,例如
SELECT t1.* FROM TABLE_1 t1 LEFT OUTER JOIN TABLE_2 t2 ON (t2.KEY_FIELD = t1.KEY_FIELD) WHERE t2.KEY_FIELD IS NULL
在这种情况下,假设TABLE_2.KEY_FIELD是TABLE_2上主键的一部分,因此如果TABLE_2中实际存在数据,则永远不能为NULL。如果在上面的连接之后,发现TABLE_2.KEY_FIELD在连接集中包含NULL,则意味着没有找到TABLE_2行来匹配相应的TABLE_1行.这有时可能很有用。
本站文章主要用于个人学习记录,可能对您有所帮助,仅供参考!

