01. INNER JOIN
内连接 - 返回两表都匹配的行:
sql
-- 基本内连接
SELECT users.username, orders.amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;
-- 使用别名
SELECT u.username, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- 多表连接
SELECT u.username, o.amount, p.product_name
FROM users u
INNER JOIN orders o ON u.id = o.user_id
INNER JOIN products p ON o.product_id = p.id;02. LEFT JOIN
左连接 - 返回左表所有行,右表无匹配则为NULL:
sql
-- 查询所有用户及其订单(包括没有订单的用户)
SELECT u.username, o.amount
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
-- 找出没有订单的用户
SELECT u.username
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE o.id IS NULL;03. RIGHT JOIN & FULL JOIN
右连接和全连接:
sql
-- 右连接 - 返回右表所有行
SELECT u.username, o.amount
FROM users u
RIGHT JOIN orders o ON u.id = o.user_id;
-- MySQL不支持 FULL JOIN,可以用 UNION 模拟
SELECT u.username, o.amount
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
UNION
SELECT u.username, o.amount
FROM users u
RIGHT JOIN orders o ON u.id = o.user_id;INNER JOIN 是最常用的连接类型,LEFT JOIN 次之。FULL JOIN 在 MySQL 中不直接支持。
知识测验
第 1/4 题正确 0
INNER JOIN 返回什么?
下一节
下一节 聚合函数与分组