MySQL 에서 표 서브 조회 와 관련 서브 조회 의 기초 학습 강좌
테이블 서브 쿼 리 란 하위 쿼 리 가 되 돌아 오 는 결과 집합 을 가리 키 며 N 줄 N 열의 테이블 데이터 입 니 다.
MySQL 시트 하위 조회 인 스 턴 스
다음은 예 를 들 어 원본 데이터 시트 두 장 입 니 다.
article 표:
blog 표:
SQL 은 다음 과 같 습 니 다.
SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog)
조회 반환 결 과 는 다음 과 같다.이 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 문장 표:
user 사용자 테이블:
article 표 의 데 이 터 를 찾 으 려 면 article 의 한 필드 나 일부 필드 가 user 표 필드 와 논리 적 인 관 계 를 가 져 야 합 니 다(이 예 는 uid 와 같 습 니 다).SQL 문 구 는 다음 과 같 습 니 다.
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE article.uid = user.uid)
검색 결 과 를 다음 과 같이 되 돌려 줍 니 다.이 예 를 들 어 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 으로 관련 하위 조 회 를 대체 하 는 사례 를 보 여주 기 위 한 것 일 뿐 표 이름 이 아 닙 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.