2016-11-30 1 views
0

나는 카테고리라는 mysql 열이 있습니다. 나는 2특정 값이 mysql 열에 있는지 확인하십시오.

$query = "SELECT * FROM my_table WHERE categories LIKE '2'"; 
$rows = mysql_query($query); 

이것은 행을 반환 값을 포함하는 모든 행을 얻을려고 ... 1 또는 2 또는 1,2,3 또는 2,12

을 : 그것은이 같은 하나 또는 여러 개의 값을 포함 할 수 있습니다 열에 값 2 만 있지만 1,2,3 또는 2,12는없는 경우. 가치 2를 포함한 모든 행을 어떻게 얻을 수 있습니까?

+1

사용 -> '% 쿼리에서 2 %' – jitendrapurohit

+0

http://stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in-a-database -column-really-that-bad/3653574 – e4c5

+0

또는'find_in_set ('2', categories)'처럼'find_in_set' 함수입니다. – Blank

답변

0

다음 중 하나를 사용할 수 있습니다 : 그것은 2의 양쪽에 2 또는 1,2 등 아무것도 일치 있도록

% 와일드 카드입니다. 문제는 대신 쉼표가 값 목록을 분리 기대 find_in_set MySQL의 기능을 고려해야 등 21, 22,

$query = "SELECT * FROM my_table WHERE categories LIKE '%2%'"; 

일치 할 수있다.

$query = "SELECT * FROM my_table WHERE find_in_set('2', `categories`)"; 
+0

find_in_set 작품입니다. 감사! :) – Jqrp

0

@jitendrapurohut 말했듯이, 당신이

$query = "SELECT * FROM my_table WHERE categories LIKE '%2%'"; 
$rows = mysql_query($query); 

를 사용하여 작업을 수행하지만이 같은 매장 컬렉션에 정말 나쁜 수 있습니다.

  1. 카테고리 (ID_C 이름) => 각 카테고리
  2. MY_TABLE 함께 테이블 (id_m [...])
  3. categories_my_table (ID_C, id_m)
  4. : 나은 aproach는 다음과 같다

그런 다음이 쿼리를 사용 그것은 매장 컬렉션 리터 나쁜 왜 링크는 설명 e4c5 @ :

SELECT * 
FROM my_table m 
INNER JOIN categories_my_table cm ON m.id_m = cm.id_m 
INNER JOIN categories c ON cm.id_c = c.id_c 
WHERE 
c.id_c = 2; 

편집 이케이 ...

-1
SELECT * FROM my_table WHERE categories LIKE '%2%' AND categories!='1,2,3' AND categories!='2,12'; 
+0

안녕하세요, @Jqrp이 쿼리를 시도하십시오 – Singh

+0

아주 잘 작동하지 않습니다 - 예를 들어 범주가 '23'또는 '102'인 행을 포함하지만 예를 들어 원하지 않는 행이 포함됩니다. –

관련 문제