집 >데이터 베이스 >MySQL 튜토리얼 >다른 테이블에 존재하지 않는 레코드를 한 테이블에서 찾는 방법은 무엇입니까?
다른 테이블에는 존재하지 않는 레코드를 한 테이블에서 찾는 방법은 무엇입니까?
관계형 데이터베이스에서는 다른 테이블에는 없는 레코드를 한 테이블에서 찾아야 할 수도 있습니다. 일반적인 예는 전화번호부에 등록되지 않은 전화번호를 가진 개인의 통화 기록을 식별하는 것입니다.
다음 시나리오를 고려해보세요.
<code>电话簿 (Phone_book) +----+------+--------------+ | id | name | phone_number | +----+------+--------------+ | 1 | John | 111111111111 | +----+------+--------------+ | 2 | Jane | 222222222222 | +----+------+--------------+ 来电记录 (Call) +----+------+--------------+ | id | date | phone_number | +----+------+--------------+ | 1 | 0945 | 111111111111 | +----+------+--------------+ | 2 | 0950 | 222222222222 | +----+------+--------------+ | 3 | 1045 | 333333333333 | +----+------+--------------+</code>
전화번호가 전화번호부에 없는 개인의 통화 기록을 찾으려면 다음과 같은 여러 방법을 사용할 수 있습니다.
방법 1: 'NOT IN' 하위 쿼리 사용
<code class="language-sql">SELECT * FROM Call WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book)</code>
'Call' 테이블의 전화번호가 'Phone_book' 테이블에 나타나는지 직접 확인하는 쿼리입니다. 그렇지 않은 경우 해당 통화 기록을 선택하십시오.
방법 2: 'NOT EXISTS' 하위 쿼리 사용
<code class="language-sql">SELECT * FROM Call WHERE NOT EXISTS (SELECT * FROM Phone_book WHERE Phone_book.phone_number = Call.phone_number)</code>
'NOT IN' 하위 쿼리와 유사하게 이 방법은 'NOT EXISTS' 하위 쿼리를 사용하여 'Phone_book' 테이블에 일치하는 전화번호가 있는지 확인합니다.
방법 3: 'LEFT OUTER JOIN' 사용
<code class="language-sql">SELECT * FROM Call LEFT OUTER JOIN Phone_Book ON (Call.phone_number = Phone_book.phone_number) WHERE Phone_book.phone_number IS NULL</code>
이 방법은 'LEFT OUTER JOIN'을 사용하여 모든 수신 전화 기록을 검색한 다음 'Phone_book.phone_number' 열에서 NULL 값을 확인하여 'Phone_book' 테이블에서 일치하는 전화번호가 있는 기록을 필터링합니다.
위 내용은 다른 테이블에 존재하지 않는 레코드를 한 테이블에서 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!