13.表连接中的USING子句的使用和说明

表连接中的USING子句的使用和说明

概念

USING 子句是 SQL 里“天然连接”(natural-style join)的简化写法,一句话记住:
“只要列名相同,就只写一次,自动等值连接,结果里只保留一列。”

要点:

  • 1.只能用于 等值连接(INNER / LEFT / RIGHT / FULL 均可)。
  • 2.括号里列出双方同名的列;这些列同时在两张表里存在且类型可比较。
  • 3.执行时等价于 ON t1.col = t2.col AND …,但结果集中同名列只保留一份,不存在 t1.col 与 t2.col 二义性。
  • 4.因为列只保留一份,后续 SELECT 里可以直接写 SELECT col … 而不必加表前缀;若再写 t1.col 会报 “column reference is ambiguous”。
  • 5.如果同名但不想用来连接,就不要放进 USING;需要另外的条件再用 AND 补充即可。
  • 6.多列写逗号分隔:USING (deptno, loc)。
  • 7.标准 SQL 语法,PostgreSQL、MySQL、Oracle、MariaDB 等都支持;SQL Server 暂无 USING。

示例:

-- 传统 ON 写法
SELECT d.deptno, d.dname, e.empno, e.ename
FROM dept d
JOIN emp e ON e.deptno = d.deptno;

-- 等价的 USING 写法
SELECT deptno, dname, empno, ename   -- deptno 只出现一次
FROM dept d
JOIN emp e USING (deptno);

USING 让语句更短、结果集更干净,但前提是连接列必须同名;否则只能用 ON。

posted @ 2026-05-12 17:05  数据库小白(专注)  阅读(38)  评论(0)    收藏  举报