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。

浙公网安备 33010602011771号