> 데이터 베이스 > MySQL 튜토리얼 > 내 MySQL WHERE IN() 쿼리가 여러 값이 포함된 레코드를 반환하지 않는 이유는 무엇입니까?

내 MySQL WHERE IN() 쿼리가 여러 값이 포함된 레코드를 반환하지 않는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-04 17:54:02
원래의
431명이 탐색했습니다.

Why Doesn't My MySQL WHERE IN () Query Return Records with Multiple Values?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿