更多>>数据库 Blog

一条记录属于多个分类时,使用 MySQL 自带函数 find_in_set 实现多值匹配查询

本文主要讲述了,当一篇文章属于多个分类时,如何根据指定的分类,查出此分类下所有文章的问题。用 MySQL 自带函数 find_in_set 则能很好的解决这一问题。

在实际使用中,我们经常会涉及到一篇文章对应多个分类的情况,那么在前端使用中,如何查询某个分类下的文章呢?本文将告诉你解决方案。


首先我们准备一个文章表,表名和表字段如下。


表名:my_arc

表字段:

arc_id 文章ID,主键自增

arc_name 文章标题

arc_cate 文章所属分类,若有多个,以英文 , 相隔,如 3,6,9


表中数据,如图所示:

1.png


接下来,我们就可以用 MySQL 提供的 find_in_set 函数,进行数据的查询了。


find_in_set 用法:

find_in_set(参数一,参数二)

参数说明:

参数一:想要查询的分类值,如 3

参数二:文章表中的分类所存储的字段,如 arc_cate


需求一:查询 cate = 3 的记录

代码如下:

# 查询 cate = 3 的记录
SELECT * FROM `my_arc` where find_in_set(3,arc_cate);

执行结果如下:

2.png


需求二:查询 cate = 1 的记录

代码如下:

# 查询 cate = 1 的记录
SELECT * FROM `my_arc` where find_in_set(1,arc_cate);

执行结果如下:

3.png


需求三:查询 cate = 1 或 cate = 3 的记录

代码如下:

# 查询 cate = 1 or cate = 3 的记录
SELECT * FROM `my_arc` where find_in_set(1,arc_cate) or find_in_set(3,arc_cate);

执行结果如下:

4.png


需求四:查询 cate = 1 并且 cate = 3 的记录

代码如下:

# 查询 cate = 1 and cate = 3 的记录
SELECT * FROM `my_arc` where find_in_set(1,arc_cate) and find_in_set(3,arc_cate);

执行结果如下:

5.png


评论列表

暂时没有相关记录

发表评论

用来接收审核回复提醒,请认真填写

  换一张?
captcha
看不清?点击图片换一张