MySQL 에서 표 서브 조회 와 관련 서브 조회 의 기초 학습 강좌

2998 단어 MySQL하위 조회
MySQL 시트 하위 검색
테이블 서브 쿼 리 란 하위 쿼 리 가 되 돌아 오 는 결과 집합 을 가리 키 며 N 줄 N 열의 테이블 데이터 입 니 다.
MySQL 시트 하위 조회 인 스 턴 스
다음은 예 를 들 어 원본 데이터 시트 두 장 입 니 다.
article 표:
2015121895547250.png (640×131)
blog 표:
2015121895608029.png (642×104)
SQL 은 다음 과 같 습 니 다.

SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog)
조회 반환 결 과 는 다음 과 같다.
20151218100320512.png (642×84)
이 SQL 의 의 미 는 article 표 에서 지정 한 필드 를 찾 는 동시에 blog 표 에 있 는 모든 줄 에 도 존재 합 니 다.

SELECT * FROM article,blog 
WHERE (article.title=blog.title AND article.content=blog.content AND article.uid=blog.uid)
실제로 뒤의 문 구 는 MySQL 의 최 적 화 를 거 쳐 효율 이 높 거나 MySQL JOIN 표 로 연결 하여 실현 할 수 있다.이 예 를 사용 하 는 것 은 테이블 조회 의 용법 을 설명 하기 위해 서 입 니 다.
MySQL 관련 서브 쿼 리
관련 하위 조 회 는 표 에 대한 인용 을 포함 하 는 하위 조 회 를 말 하 며,이 표 도 외부 조회 에 표 시 됩 니 다.쉽게 말 하면 하위 조회 가 주 조회 의 데이터 데 이 터 를 인용 한 것 이다.
하나의 실제 예 로 관련 하위 조 회 를 이해 합 니 다.
article 문장 표:
20151218100140774.png (643×127)
user 사용자 테이블:
2015121895813868.png (649×104)
article 표 의 데 이 터 를 찾 으 려 면 article 의 한 필드 나 일부 필드 가 user 표 필드 와 논리 적 인 관 계 를 가 져 야 합 니 다(이 예 는 uid 와 같 습 니 다).SQL 문 구 는 다음 과 같 습 니 다.

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE article.uid = user.uid)
검색 결 과 를 다음 과 같이 되 돌려 줍 니 다.
2015121895947027.png (642×106)
이 예 를 들 어 SQL 과 다음 문 구 를 비교 하면 관련 서브 조회 와 일반 서브 조회 의 차 이 를 더욱 잘 알 수 있 습 니 다.

SELECT * FROM article WHERE uid IN(SELECT uid FROM user)
이 실례 에서 두 SQL 이 실 행 된 후의 반환 결 과 는 모두 같 지만,그들의 실현 과정 은 완전히 다르다.후자(일반 하위 조회)는 실제 적 으로 다음 과 같이 실 행 됩 니 다.

SELECT * FROM article WHERE uid IN(1,2,3)
그러나 관련 하위 조회 에 서 는 하위 조회 문 구 를 단독으로 실행 할 수 없습니다.그 실제 절 차 는 대체로 다음 과 같다.
4.567917.먼저 외부 주 조 회 를 한다4.567917.주 조회 의 값 을 하위 조회 에 전송 하고 실행 합 니 다4.567917.하위 조 회 는 조회 결 과 를 주 조회 로 되 돌려 주 고 주 조 회 는 결과 에 따라 최종 조 회 를 완성 합 니 다이 실행 절 차 는 EXISTS 하위 조회 와 유사 합 니 다.실제로 MySQL 은 관련 하위 조 회 를 EXISTS 하위 조회 로 재 작성 하여 실 행 됩 니 다.
MySQL 관련 서브 조회 효율
분명 한 것 은 일반적인 상황 에서 관련 자 조회 의 효율 이 비교적 낮 고 실제 본 사례 에서 의 관련 자 조회 예 도 관련 자 조회 의 원리 와 용법 을 보 여주 기 위 한 것 이다.가능 하 다 면 관련 자 조 회 는 가능 한 한 JOIN 이나 다른 조 회 를 통 해 대체 합 니 다.이 예 에서 INNER JOIN 을 사용 하여 바 꾼 SQL 은 다음 과 같 습 니 다.

SELECT article.* FROM article INNER JOIN user ON article.uid = user.uid
메모:이 곳 은 INNER JOIN 으로 관련 하위 조 회 를 대체 하 는 사례 를 보 여주 기 위 한 것 일 뿐 표 이름 이 아 닙 니 다.

좋은 웹페이지 즐겨찾기