2014-03-01 45 views
0

陣列我有一個這樣的陣列:如果陣列匹配在MySQL

$搜索=陣列(5,8,9);

和數據庫表是這樣的:

id | name | cat 
------------------------------- 
1 | name1 | 1,2,3 
2 | name2 | 5,8,17,25 
3 | name3 | 14,21,5,19 

,我要尋找我的(貓)數據庫表($搜索)。 我試過inFIND_N_SET,但不幸的是他們不支持數組搜索。

有沒有辦法做到這一點,沒有PHP,只是在MySQL?

回答

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) 
+0

抱歉,我已經編輯了更多的替補,並且認爲 – Bahad001

+0

@ Bahad001,你可以嘗試最後2個選項'REGEXP'或'FIND_IN_SET' – Girish

+0

感謝的人是我所做的作品像這樣的的foreach: '的foreach($ genreExclude爲$ EXC ){ \t \t \t $ where。='AND FIND_IN_SET(「'。$ exc。'」,MANGA_GENRES)<= 0'; \t \t}' – Bahad001

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; 

它,你是否打算在查詢andor,雖然目前還不清楚。

+0

對不起,我編輯了更多的替補,並認爲 – Bahad001