집 >데이터 베이스 >MySQL 튜토리얼 >내 MySQL 쿼리에서 여러 일치 값이 있는 행이 누락되는 이유는 무엇입니까?
MySQL WHERE IN 다중 일치 값 쿼리
WHERE IN() 절을 사용하여 일치하는 MySQL 테이블에서 데이터를 검색하려고 할 때 값이 여러 개인 경우 일치하는 값이 여러 개인 행이 반환되지 않는 문제가 발생할 수 있습니다. 지정된 값이 포함된 모든 행이 반환될 것으로 예상할 수 있으므로 이 동작은 혼란스러울 수 있습니다.
설명
WHERE IN () 절은 다음을 수행하는 데 사용됩니다. 지정된 열 값이 괄호 안에 제공된 값과 일치하는지 여부에 따라 행을 선택합니다. 그러나 행에 일치하는 값이 여러 개 있는 경우(예: 1과 3 모두) 쿼리는 일련의 OR 조건으로 변환됩니다.
<code class="sql">SELECT * FROM table WHERE id='1' OR id='2' OR id='3' OR id='4';</code>
즉, 지정된 값 중 하나와 정확히 일치하는 행만
해결책
이 문제를 해결하려면 다음 방법을 고려할 수 있습니다.
방법 1: SET 데이터 유형 사용
id 열의 데이터 유형을 SET로 변경하면 단일 행에 여러 값을 저장할 수 있습니다. 그런 다음 FIND_IN_SET() 함수를 사용하여 특정 값이 포함된 행을 쿼리할 수 있습니다.
<code class="sql">SELECT * FROM table WHERE FIND_IN_SET('1', id);</code>
이 쿼리는 다른 항목의 존재 여부에 관계없이 id 열에 '1' 값이 포함된 모든 행을 반환합니다. 값.
방법 2: UNION 또는 하위 쿼리 사용
대체 접근 방식은 UNION 또는 하위 쿼리를 사용하여 각각 지정된 값 중 하나와 일치하는 여러 쿼리를 결합하는 것입니다.
<code class="sql">SELECT * FROM table WHERE id = 1 UNION SELECT * FROM table WHERE id = 3;</code>
이 쿼리는 다른 값의 존재 여부에 관계없이 1 또는 3과 일치하는 모든 행을 반환합니다.
위 내용은 내 MySQL 쿼리에서 여러 일치 값이 있는 행이 누락되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!