Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql join on用法

作者:看悲伤的曲   发布日期:2026-05-16   浏览:120

-- 示例表结构
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    department_id INT
);

CREATE TABLE departments (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

-- 插入示例数据
INSERT INTO employees (id, name, department_id) VALUES
(1, 'Alice', 1),
(2, 'Bob', 2),
(3, 'Charlie', 1);

INSERT INTO departments (id, name) VALUES
(1, 'HR'),
(2, 'Engineering');

-- 使用 INNER JOIN 查询员工及其所属部门
SELECT e.name AS employee_name, d.name AS department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.id;

-- 解释说明:
-- 上述 SQL 语句使用了 INNER JOIN,它会返回两个表中满足连接条件的记录。
-- 在这个例子中,只有那些在 employees 表中有对应的 department_id 的记录才会被返回。
-- 如果某个员工没有对应的部门(即 department_id 为空或不存在于 departments 表中),则该员工不会出现在结果集中。

-- 使用 LEFT JOIN 查询所有员工及其所属部门(即使没有对应部门)
SELECT e.name AS employee_name, d.name AS department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.id;

-- 解释说明:
-- 上述 SQL 语句使用了 LEFT JOIN,它会返回左表(employees)中的所有记录,即使右表(departments)中没有匹配的记录。
-- 对于没有匹配的记录,结果集中对应右表的字段将为 NULL。

-- 使用 RIGHT JOIN 查询所有部门及其员工(即使没有对应员工)
SELECT e.name AS employee_name, d.name AS department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.id;

-- 解释说明:
-- 上述 SQL 语句使用了 RIGHT JOIN,它会返回右表(departments)中的所有记录,即使左表(employees)中没有匹配的记录。
-- 对于没有匹配的记录,结果集中对应左表的字段将为 NULL。

-- 使用 FULL OUTER JOIN 查询所有员工和部门(无论是否有匹配)
-- 注意:MySQL 不直接支持 FULL OUTER JOIN,但可以通过 UNION 实现类似效果
SELECT e.name AS employee_name, d.name AS department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.id
UNION
SELECT e.name AS employee_name, d.name AS department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.id;

-- 解释说明:
-- 上述 SQL 语句通过 UNION 模拟了 FULL OUTER JOIN 的效果,返回左表和右表中的所有记录,无论是否有匹配。
-- 对于没有匹配的记录,结果集中对应另一表的字段将为 NULL。

上一篇:mysql格式化日期的函数

下一篇:mysql取整数

大家都在看

mysql二级索引

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站