MySql多字段模糊查询(单表/多表)

引入

今天在练习图书管理系统的时候涉及到单表或多表多个字段的联合模糊查询,例如一个关键字要同时对书籍的名称、作者、出版社等等信息进行查询,后面摸索发现or非常好用,再此记录一下。

单表操作

图书表
在这里插入图片描述
如上图所示,图书表有id、名称、出版社、出版时间…非常多的字段,而我们输入的关键词只有一个,所以查询语句可以这样拼接。

-- DISTINCT 去重
select DISTINCT * from book
where id like '%暴走%' or name like '%暴走%' or author like '%暴走%' or publish like '%暴走%';

在这里插入图片描述这样就能把书籍名称和作者以及出版社中包含暴走的数据全部模糊查询出来

多表操作

例如订单表包含书籍id和用户id两个外键
在这里插入图片描述用户表

在这里插入图片描述
在进行多字段查询订单时,我们就需要先将各个表连接起来,然后在根据各个字段查询,返回订单表数据。

SELECT DISTINCT o.id,o.bookId,o.userId,o.createTime,o.endTime,o.count,o.flag 
FROM book b,bookorder o,USER u 
WHERE b.id = o.bookId AND u.id = o.userId 
and (
b.name like '%lzp%' or u.name like '%lzp%' or u.username like '%lzp%'
)

在这里插入图片描述这样就能查询出书籍名称或用户名称或用户名包含lzp的所有订单数据

注意

在数据量较大的情况下,or语句要少用,因为一个or就相当于数据要全部重新遍历一遍非常耗时,所以我个人推荐可以给常用于查询的表专门追加一个用于查询的字段,里面在插入的时候将这一行记录中的常用来查询的字段拼接进取。


版权声明:本文为qq_42365534原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。