MySQL三表模糊查询实现方法(mysql三表模糊查询)

MySQL三表模糊查询实现方法

在实际开发过程中,多表联查是非常常见的操作。而在多表联查的基础上,往往还需要进行模糊查询操作。

本文将基于MySQL数据库,介绍如何实现三表联查,并且完成多个字段的模糊查询。

准备工作

在开始之前,需要准备好以下环境:

– 安装MySQL数据库。

– 创建三张表,并插入数据。

我们假设有三张表:users, departments和roles。它们的表结构和数据如下:

CREATE TABLE users (

id INT(11) PRIMARY KEY,

name VARCHAR(20),

department_id INT(11),

role_id INT(11)

);

CREATE TABLE departments (

id INT(11) PRIMARY KEY,

name VARCHAR(20)

);

CREATE TABLE roles (

id INT(11) PRIMARY KEY,

name VARCHAR(20)

);

INSERT INTO users VALUES

(1, ‘张三’, 1, 1),

(2, ‘李四’, 2, 2),

(3, ‘王五’, 1, 3);

INSERT INTO departments VALUES

(1, ‘技术部’),

(2, ‘市场部’);

INSERT INTO roles VALUES

(1, ‘程序员’),

(2, ‘销售员’),

(3, ‘测试员’);

三表联查

在MySQL中,我们可以使用JOIN关键字实现多张表的联查。而当我们需要连接三张或以上的表时,可以通过嵌套多个JOIN语句来实现,也可以使用MySQL中提供的JOIN语法简化操作。

我们假设要查询所有用户的姓名、部门名称和角色名称,并将结果按照部门名称升序排列。

SELECT

users.name,

departments.name,

roles.name

FROM

users

JOIN

departments

ON

users.department_id = departments.id

JOIN

roles

ON

users.role_id = roles.id

ORDER BY

departments.name ASC;

结果如下:

+——+——–+———-+

| name | name | name |

+——+——–+———-+

| 张三 | 技术部 | 程序员 |

| 王五 | 技术部 | 测试员 |

| 李四 | 市场部 | 销售员 |

+——+——–+———-+

模糊查询

在多表联查的基础上,往往还需要进行模糊查询操作。

我们假设要查询所有名字中包含“三”的用户的姓名、部门名称和角色名称,并将结果按照部门名称升序排列。

SELECT

users.name,

departments.name,

roles.name

FROM

users

JOIN

departments

ON

users.department_id = departments.id

JOIN

roles

ON

users.role_id = roles.id

WHERE

users.name LIKE ‘%三%’

ORDER BY

departments.name ASC;

结果如下:

+——+——–+———-+

| name | name | name |

+——+——–+———-+

| 张三 | 技术部 | 程序员 |

+——+——–+———-+

需要注意的是,由于我们在三个表中都有一个name字段,因此在SQL语句中需要指定具体的表名或者使用别名来避免歧义。

完整代码

下面是完整的代码:

CREATE TABLE users (

id INT(11) PRIMARY KEY,

name VARCHAR(20),

department_id INT(11),

role_id INT(11)

);

CREATE TABLE departments (

id INT(11) PRIMARY KEY,

name VARCHAR(20)

);

CREATE TABLE roles (

id INT(11) PRIMARY KEY,

name VARCHAR(20)

);

INSERT INTO users VALUES

(1, ‘张三’, 1, 1),

(2, ‘李四’, 2, 2),

(3, ‘王五’, 1, 3);

INSERT INTO departments VALUES

(1, ‘技术部’),

(2, ‘市场部’);

INSERT INTO roles VALUES

(1, ‘程序员’),

(2, ‘销售员’),

(3, ‘测试员’);

SELECT

users.name,

departments.name,

roles.name

FROM

users

JOIN

departments

ON

users.department_id = departments.id

JOIN

roles

ON

users.role_id = roles.id

ORDER BY

departments.name ASC;

SELECT

users.name,

departments.name,

roles.name

FROM

users

JOIN

departments

ON

users.department_id = departments.id

JOIN

roles

ON

users.role_id = roles.id

WHERE

users.name LIKE ‘%三%’

ORDER BY

departments.name ASC;

总结

通过本文的介绍,我们了解了MySQL中如何实现三张表的联查,并且完成多个字段的模糊查询操作。在实际开发过程中,多表联查和模糊查询是非常常见的操作,掌握这些技能对于提高开发效率和代码质量都有很大的帮助。


数据运维技术 » MySQL三表模糊查询实现方法(mysql三表模糊查询)