我有一个这样的数组:
$ search = array(5,8,9);
和这样的数据库表:
id | name | cat
-------------------------------
1 | name1 | 1,2,3
2 | name2 | 5,8,17,25
3 | name3 | 14,21,5,19
我必须在我的(cat)数据库表中搜索($ search)。
我尝试了in
和FIND_N_SET
,但不幸的是他们不支持数组搜索。
有没有办法在没有PHP的情况下进行,只是在MySQL?
答案 0 :(得分:0)
IN
比较运算符的作用类似于相等运算符。这样:
cat IN ('5','8', '9')
相当于:
( cat = '5' AND cat = '8' AND cat = '9')
或者您也可以使用REGEXP
SELECT * FROM mytable WHERE
cat REGEXP '[[:<:]]5[[:>:]]' AND cat REGEXP '[[:<:]]8[[:>:]]' AND cat REGEXP '[[:<:]]9[[:>:]]'
还有一个选项可以使用FIND_IN_SET
来查找单个ID
WHERE FIND_IN_SET('5', cat)
AND FIND_IN_SET('8', cat)
AND FIND_IN_SET('9', cat)
答案 1 :(得分:0)
你会这样做:
select *
from table t
where find_in_set(5, cat) > 0 and
find_in_set(8, cat) > 0 and
find_in_set(9, cat) > 0;
目前还不清楚您是否打算在查询中使用and
或or
。