mysql 使用 FIND_IN_SET 来查询数据

Posted dywangzq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 使用 FIND_IN_SET 来查询数据相关的知识,希望对你有一定的参考价值。

mysql中find_in_set函数很有意思,它的功能是查找以英文逗号隔开的值,我们可以将数据存储类似为1,2,3,4格式。今天我们就来看看在thinkphp中怎样正确地使用find_in_set函数进行数据查询。

在ThinkPHP中, 我们可以使用数组的形式组合查询条件,对于组装find_in_set时,可以有如下写法:

$map[‘_string‘]="FIND_IN_SET(1,tid)";//tid为表字段

还可以组合多个find_in_set查询一起使用:

$map[‘_string‘] = "FIND_IN_SET(1,tid) OR FIND_IN_SET(2,tid) OR FIND_IN_SET(3,tid) OR FIND_IN_SET(4,tid)";

最后生成的sql语句如下所示:

SELECT `id`,`title`,`enname`,`futitle`,`picture`,`content` FROM `tp_content` WHERE `is_recover` = 0 AND `cityid` = 2
 AND ( `cate_id` = ‘1‘ OR `cate_pid` = ‘1‘ ) AND ( FIND_IN_SET(1,tid) OR FIND_IN_SET(2,tid) OR FIND_IN_SET(3,tid) OR FIND_IN_SET(4,tid) ) 
 ORDER BY add_time desc,id desc LIMIT 0,10

使用 FIND_IN_SET 可以省下用php切成数组然后在进行匹配的麻烦

以上是关于mysql 使用 FIND_IN_SET 来查询数据的主要内容,如果未能解决你的问题,请参考以下文章

mysql中FIND_IN_SET的使用方法

oracle 有没有类似mysql的find_in_set功能

mysql中find_in_set()函数的使用

java 中 使用 find_in_set关键字查询mysql,怎么传值?

java 中 使用 find_in_set关键字查询mysql,怎么传值?

这个 MySQL 查询“LEFT JOIN ON FIND_IN_SET”可以更简化吗?