SQL JOIN 连接查询速查表

SQL JOIN 是关联多表查询的核心,整理各种连接类型和用法,快速编写正确的关联查询。

数据库·共 9 条命令·最后更新 2026-07-19
返回 数据库

INNER JOIN 2

SELECT * FROM users INNER JOIN orders ON users.id = orders.user_id
只返回两表匹配的行
SELECT u.name, o.total FROM users u JOIN orders o ON u.id = o.user_id
简写 JOIN(默认 INNER)

LEFT / RIGHT JOIN 3

SELECT * FROM users LEFT JOIN orders ON users.id = orders.user_id
返回左表所有行,右表无匹配则为 NULL
SELECT * FROM users RIGHT JOIN orders ON users.id = orders.user_id
返回右表所有行,左表无匹配则为 NULL
SELECT * FROM users LEFT JOIN orders ON users.id = orders.user_id WHERE orders.id IS NULL
查找左表独有(无订单的用户)

FULL / CROSS JOIN 2

SELECT * FROM users FULL OUTER JOIN orders ON users.id = orders.user_id
返回两表所有行,无匹配则为 NULL
SELECT * FROM table1 CROSS JOIN table2
笛卡尔积,每行与另一表所有行组合

自连接与多表 2

SELECT e.name, m.name AS manager FROM employees e LEFT JOIN employees m ON e.manager_id = m.id
自连接(员工-经理关系)
SELECT * FROM a JOIN b ON a.id = b.a_id JOIN c ON b.id = c.b_id
多表连接

💡 提示

  • LEFT JOIN 的 WHERE 条件如果放在 ON 里,只影响右表匹配;放在 WHERE 里会过滤整个结果集。
  • CROSS JOIN 会产生笛卡尔积,数据量大时慎用。
  • 用表别名(u、o)可以让多表查询更简洁易读。
  • EXISTS 子查询在某些场景下比 JOIN 性能更好,特别是只需要判断存在性时。