집 >데이터 베이스 >MySQL 튜토리얼 >내 MySQL WHERE IN() 쿼리가 여러 값이 포함된 레코드를 반환하지 않는 이유는 무엇입니까?
MySQL WHERE IN() 쿼리가 예상 결과를 반환하지 않음
MySQL에서 WHERE IN() 문은 일반적으로 기반 레코드를 검색하는 데 사용됩니다. 지정된 값 세트에 대해. 그러나 때때로 사용자는 예상한 행이 결과에 반환되지 않는 상황에 직면합니다.
문제 설명:
사용자가 "테이블에서 모든 행을 선택하는 쿼리를 가지고 있습니다. "id" 열이 지정된 목록에 있는 테이블:
<code class="sql">SELECT * FROM table WHERE id IN (1,2,3,4);</code>
사용자는 레코드에 여러 개의 "id" 값이 있을 때 다음과 같이 언급했습니다. (예: 1과 3 모두) 결과에 반환되지 않습니다.
문제 이해:
WHERE IN() 문은 제공된 목록을 변환합니다. 값을 일련의 OR 연산자로 변환:
<code class="sql">SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';</code>
이는 "id" 열이 정확히 하나와 일치하는 행만 의미합니다. 중 지정된 값이 반환됩니다.
해결책 1: FIND_IN_SET 사용
이 제한을 극복하는 한 가지 접근 방식은 "id" 열의 "id" 열을 변경하여 데이터 구조를 수정하는 것입니다. 데이터 유형을 SET로 설정합니다. 이를 통해 열에 여러 값을 저장할 수 있습니다.
FIND_IN_SET 함수를 사용하면 SET 내에 특정 값이 있는 레코드를 검색할 수 있습니다.
<code class="sql">SELECT * FROM table WHERE FIND_IN_SET('1', id);</code>
그러나 다음이 중요합니다. 이 솔루션은 추가적인 복잡성을 초래하며 모든 시나리오에 적합하지 않을 수 있습니다.
위 내용은 내 MySQL WHERE IN() 쿼리가 여러 값이 포함된 레코드를 반환하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!