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切成数组然后在进行匹配的麻烦

posted @ 2018-07-13 16:35  泉泉圆圆全全  阅读(610)  评论(0编辑  收藏  举报