프로필 친구 ID를 쉼표로 구분 된 문자열 형식으로 저장합니다. 쿼리를 실행하면 해당 레코드는 1 레코드를 반환하지만 2 레코드는 반환해야합니다. 이 결과를 제공MySQL WHERE IN 단 하나의 레코드 만 반환합니다.
MySQL의 쿼리
SELECT * FROM PROFILES WHERE profile_id IN(SELECT profile_friends FROM PROFILES WHERE profile_id = '1')
나는 다음과 같은 쿼리를 실행하면
가, 나에게 profile_friends에있는 두 개의 ID의의를 제공합니다 (결과는이 개 기록 NOT 1 개 기록해야한다) 들. 당신이 정수 필드
에서 값을 검색하지만 (profile_friends가) 문자열이 때문에 다음 당신의 분야 때
SELECT profile_friends FROM PROFILES WHERE profile_id = '1'
귀하의 질의는 '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
정상화 참조 – Strawberry