用于一次搜索多个ID的Mysql查询

时间:2018-05-31 05:34:42

标签: mysql

我的Senario如下,

1)我的数组如下所示,我想在数据库中搜索字段=“state_id”,

$stateIds= array(
[0]=>1,
[1]=>13,
[2]=>18,
[3]=>21,
[4]=>14,
);

在我的db“state_id”字段中存储为==> 1,2,3

我必须显示其state_id存在于$ stateIds数组中的用户

从上面的示例中,用户的state_id与1,2,3类似,如果我们检入$ stateIds数组,那么在那里存在id“1”,所以从用户应该来的查询开始。

我解雇了下面的查询,

"FIND_IN_SET('".implode(',',$stateIds)."', state_id) OR ";   

但它不起作用, 请有人帮我解决一下吗?

1 个答案:

答案 0 :(得分:2)

Mysql的FIND_IN_SET将第一个参数作为单个值以逗号分隔的字符串查找,以便在b中找到a,b,c,d

SELECT FIND_IN_SET('b','a,b,c,d');

使用FIND_IN_SET,您无法将逗号分隔的字符串与a,b中的其他逗号分隔字符串匹配,例如a,b,c,d,但是对于您的情况,您需要循环数组并将每个值放入{ {1}}类似

FIND_IN_SET

如果foreach($stateIds as $stateId){ $query.= "FIND_IN_SET('".$stateId."', state_id) OR "; } 是关系字段,我建议您normalize your structure,将关系存储在一个列中不是一个好主意