> 데이터 베이스 > MySQL 튜토리얼 > INTERSECT를 사용하지 않고 MySQL의 여러 테이블에서 일치하는 레코드를 어떻게 찾을 수 있습니까?

INTERSECT를 사용하지 않고 MySQL의 여러 테이블에서 일치하는 레코드를 어떻게 찾을 수 있습니까?

Susan Sarandon
풀어 주다: 2024-12-27 09:32:13
원래의
325명이 탐색했습니다.

How Can I Find Matching Records Across Multiple Tables in MySQL Without Using INTERSECT?

INNER JOIN 및 IN 절을 사용하여 MySQL에서 레코드 교차점 찾기

여러 테이블로 작업할 때 여러 필드에서 특정 기준과 일치하는 레코드를 검색해야 하는 경우가 종종 있습니다. . 이 시나리오에서는 이름과 성 필드가 다른 테이블의 특정 값과 일치하는 레코드를 찾으려고 합니다.

한 가지 접근 방식은 SQL 쿼리 예제에 표시된 대로 INTERSECT 명령을 사용하는 것입니다. 그러나 MySQL은 INTERSECT를 지원하지 않습니다. 대신 원하는 결과를 얻을 수 있는 다른 방법이 있습니다.

INNER JOIN 사용

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 절 사용

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

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