为何下述SQL查询的内连接部分使用USING而非ON?
为什么在INNER JOIN中使用USING而非ON?
在这个SQL查询里选择USING而非ON做内连接,主要有这几个原因:
语法更简洁:当两个表的关联字段名称完全一致时,
USING只需要写出一次字段名即可完成等值连接,不用像ON那样重复写两遍表名加字段的等式。比如例子里的INNER JOIN departments USING (department_id),等价于INNER JOIN departments ON employees.department_id = departments.department_id,代码更短,写起来更省事。避免返回重复字段:用
USING连接后,关联字段在查询结果集中只会保留一份(比如这里的department_id);如果用ON连接,要是写SELECT *,结果里会同时出现employees.department_id和departments.department_id两个重复字段,即使这个查询里没直接查关联字段,逻辑上也更干净,不会有冗余。语义更直观:
USING明确传达了“基于同名字段做等值连接”的意图,看到USING (department_id)就能立刻明白是两个表靠同名字段关联,比ON的等式写法可读性更强,尤其是多表连接的场景下,能让逻辑更清晰。
原查询代码:
SELECT COALESCE(department_name, '-') department, COALESCE(job_title,'-') job, COUNT(*) , SUM(salary) salary FROM employees INNER JOIN departments USING (department_id) INNER JOIN jobs USING (job_id) GROUP BY CUBE(department_name,job_title) ORDER BY department_name ASC NULLS LAST;
内容的提问来源于stack exchange,提问作者Mariam Mohammed
相关产品推荐
相关产品推荐

