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