-- 示例代码:使用 INNER JOIN 连接两个表
-- 假设有两个表:`users` 和 `orders`
-- `users` 表包含用户信息,`orders` 表包含订单信息
-- users 表结构:
-- +----+----------+-----------+
-- | id | username | email |
-- +----+----------+-----------+
-- | 1 | Alice | alice@example.com |
-- | 2 | Bob | bob@example.com |
-- | 3 | Charlie | charlie@example.com |
-- +----+----------+-----------+
-- orders 表结构:
-- +----+------------+---------+
-- | id | user_id | product |
-- +----+------------+---------+
-- | 1 | 1 | Book |
-- | 2 | 1 | Pen |
-- | 3 | 2 | Notebook |
-- +----+------------+---------+
-- 使用 INNER JOIN 查询每个用户的订单信息
SELECT users.id, users.username, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id;
-- 解释:
-- 上述查询将返回所有有订单的用户及其对应的订单产品。
-- INNER JOIN 只会返回两个表中匹配的记录。如果某个用户没有订单,则该用户不会出现在结果集中。
-- 示例输出:
-- +----+----------+---------+
-- | id | username | product |
-- +----+----------+---------+
-- | 1 | Alice | Book |
-- | 1 | Alice | Pen |
-- | 2 | Bob | Notebook|
-- +----+----------+---------+
-- 示例代码:使用 LEFT JOIN 连接两个表
-- 使用 LEFT JOIN 查询所有用户及其订单信息(即使用户没有订单)
SELECT users.id, users.username, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
-- 解释:
-- 上述查询将返回所有用户,即使他们没有订单。对于没有订单的用户,`product` 列将为 NULL。
-- 示例输出:
-- +----+----------+---------+
-- | id | username | product |
-- +----+----------+---------+
-- | 1 | Alice | Book |
-- | 1 | Alice | Pen |
-- | 2 | Bob | Notebook|
-- | 3 | Charlie | NULL |
-- +----+----------+---------+
-- 示例代码:使用 RIGHT JOIN 连接两个表
-- 使用 RIGHT JOIN 查询所有订单及其对应的用户信息(即使订单没有对应的用户)
SELECT users.id, users.username, orders.product
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;
-- 解释:
-- 上述查询将返回所有订单,即使它们没有对应的用户。对于没有对应用户的订单,`id` 和 `username` 列将为 NULL。
-- 注意:RIGHT JOIN 不常用,通常可以使用 LEFT JOIN 的反向操作来实现相同的效果。
-- 示例输出:
-- +------+----------+---------+
-- | id | username | product |
-- +------+----------+---------+
-- | 1 | Alice | Book |
-- | 1 | Alice | Pen |
-- | 2 | Bob | Notebook|
-- +------+----------+---------+
-- 示例代码:使用 FULL OUTER JOIN 连接两个表(MySQL 不直接支持)
-- MySQL 不直接支持 FULL OUTER JOIN,但可以通过 UNION 模拟
SELECT users.id, users.username, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id
UNION
SELECT users.id, users.username, orders.product
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;
-- 解释:
-- 上述查询将返回所有用户和所有订单,即使它们之间没有匹配的记录。
-- 对于没有订单的用户,`product` 列将为 NULL;对于没有用户的订单,`id` 和 `username` 列将为 NULL。
-- 示例输出:
-- +------+----------+---------+
-- | id | username | product |
-- +------+----------+---------+
-- | 1 | Alice | Book |
-- | 1 | Alice | Pen |
-- | 2 | Bob | Notebook|
-- | 3 | Charlie | NULL |
-- +------+----------+---------+
上一篇:mysql 关联update
下一篇:mysql删除数据表
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站