여러 테이블로 작업할 때 여러 필드에서 특정 기준과 일치하는 레코드를 검색해야 하는 경우가 종종 있습니다. . 이 시나리오에서는 이름과 성 필드가 다른 테이블의 특정 값과 일치하는 레코드를 찾으려고 합니다.
한 가지 접근 방식은 SQL 쿼리 예제에 표시된 대로 INTERSECT 명령을 사용하는 것입니다. 그러나 MySQL은 INTERSECT를 지원하지 않습니다. 대신 원하는 결과를 얻을 수 있는 다른 방법이 있습니다.
INNER JOIN을 사용하면 다른 테이블에 일치하는 행이 있는 레코드를 필터링할 수 있습니다. 귀하의 경우 다음 쿼리를 사용할 수 있습니다.
SELECT DISTINCT records.id FROM records INNER JOIN data d1 ON d1.id = records.firstname AND d1.value = "john" INNER JOIN data d2 ON d2.id = records.lastname AND d2.value = "smith"
이 쿼리는 두 조건을 모두 만족하는 레코드의 고유 ID를 반환합니다.
또 다른 대안은 IN 절을 사용하여 하위 쿼리에 존재하는 값을 필터링하는 것입니다.
SELECT DISTINCT records.id FROM records WHERE records.firstname IN ( SELECT id FROM data WHERE value = 'john' ) AND records.lastname IN ( SELECT id FROM data WHERE value = 'smith' )
이 쿼리는 다음을 반환합니다. 이름과 성 값이 하위 쿼리에 지정된 값과 일치하는 레코드를 선택하면 INNER JOIN 쿼리와 동일한 결과를 얻을 수 있습니다.
위 내용은 INTERSECT를 사용하지 않고 MySQL의 여러 테이블에서 일치하는 레코드를 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!