2015-01-17 2 views
0

프로필 친구 ID를 쉼표로 구분 된 문자열 형식으로 저장합니다. 쿼리를 실행하면 해당 레코드는 1 레코드를 반환하지만 2 레코드는 반환해야합니다. 이 결과를 제공MySQL WHERE IN 단 하나의 레코드 만 반환합니다.

MySQL의 쿼리

SELECT * FROM PROFILES WHERE profile_id IN(SELECT profile_friends FROM PROFILES WHERE profile_id = '1') 

나는 다음과 같은 쿼리를 실행하면 enter image description here

가, 나에게 profile_friends에있는 두 개의 ID의의를 제공합니다 (결과는이 개 기록 NOT 1 개 기록해야한다) 들. 당신이 정수 필드

에서 값을 검색하지만 (profile_friends가) 문자열이 때문에 다음 당신의 분야 때

SELECT profile_friends FROM PROFILES WHERE profile_id = '1' 

enter image description here

+2

귀하의 질의는 'WHERE PROFILE_ID IN ('5,10 ')'이된다. MySQL은 그것을 int로 구문 분석하여 WHERE profile_id IN (5)를 발생시킵니다. 진짜 재미는'6,9 '이 될 수도있는 지역에 따라'5,9 '로 시작합니다. 조인에 쉼표로 구분 된 필드를 사용하지 마십시오. 정말로 필요한 경우에는 [MySQL 쿼리에서 값을 쉼표로 구분하여 검색] (http://stackoverflow.com/questions/5033047/mysql-query-finding-values-in-a-comma-separated-string)을 참조하십시오. – CodeCaster

+0

정상화 참조 – Strawberry

답변

2

에만 사용 절 쿼리

SELECT * FROM PROFILES WHERE FIND_IN_SET(profile_id,(SELECT profile_friends FROM PROFILES WHERE profile_id = '1')) 

다음 사용하시기 바랍니다 당신이 사용해야하는 절.

FIND_IN_SET

+0

고맙습니다 –

관련 문제