집 >데이터 베이스 >MySQL 튜토리얼 >SET 데이터 유형을 사용할 때 MySQL WHERE IN()이 여러 ID 일치를 반환하지 않는 이유는 무엇입니까?
MySQL WHERE IN ()이 여러 ID 일치를 반환하지 않음
MySQL에서 WHERE IN () 절은 다음을 기준으로 결과를 필터링하는 데 사용됩니다. 지정된 값 목록. 그러나 테이블 열에 여러 값이 포함된 경우 지정된 값 모두와 일치하는 행이 반환되지 않을 수 있습니다.
다음 쿼리를 고려해 보세요.
SELECT * FROM table WHERE id IN (1, 2, 3, 4);
이 쿼리는 id 열은 1, 2, 3 또는 4와 같습니다. 그러나 행에 이러한 값이 두 개 이상 포함되어 있으면 반환되지 않을 수 있습니다.
이유를 이해하려면 IN에 유의하는 것이 중요합니다. 절은 논리적 OR 조건으로 변환됩니다.
SELECT * FROM table WHERE id='1' OR id='2' OR id='3' OR id='4';
이는 지정된 값 중 하나와 정확히 일치하는 행만 반환된다는 의미입니다.
SET 데이터 유형 및 FIND_IN_SET을 사용하는 솔루션
이 문제를 해결하는 한 가지 방법은 id 열의 데이터 유형을 SET 데이터 유형으로 변경하는 것입니다. SET 열에는 여러 값을 쉼표로 구분된 목록으로 저장할 수 있습니다.
데이터 유형이 SET로 변경되면 FIND_IN_SET 함수를 사용하여 특정 값을 기준으로 행을 검색할 수 있습니다.
SELECT * FROM table WHERE FIND_IN_SET('1', id);
이 쿼리는 다른 값이 포함되어 있는지 여부에 관계없이 id 열에 값 1이 포함된 모든 행을 반환합니다.
위 내용은 SET 데이터 유형을 사용할 때 MySQL WHERE IN()이 여러 ID 일치를 반환하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!