콘텐츠
하위 쿼리는 다른 쿼리 내에 중첩 된 쿼리입니다. 이를 사용하면 문장의 일부를 분리하고 복잡한 결합 및 조합이 필요할 수있는 조작에 대해보다 읽기 쉬운 대안을 제공 할 수 있습니다. MySQL의 서브 쿼리는 값, 행, 열 또는 데이터 테이블을 반환 할 수 있습니다.
하위 쿼리를 사용하여보다 읽기 쉽고 압축 된 문장 만들기 (Thinkstock 이미지 / Comstock / 게티 이미지)
문법
하위 쿼리의 기본 구문은 다음과 같습니다.
SELECT * FROM table1 WHERE columnA = (SELECT columnB FROM table2)로 이동하십시오.
하위 쿼리는 "SELECT", "INSERT", "UPDATE", "DELETE", "SET"또는 "DO"문으로 구성되어야하며 테이블을 변경하고 하위 쿼리 내에서 동시에 사용할 수 없습니다. 하위 쿼리는 대개 = (같음), <> (다른), <= (작거나 같음),> = 같은 비교 연산자와 논리 연산자 중 하나를 포함 할 수있는 WHERE 절의 오른쪽에 사용됩니다. 또는 "BETWEEN"(두 값 사이), "NOT", "AND"및 "OR". 또한 "DISTINCT", "GROUP BY", "ORDER BY"및 "LIMIT"키워드를 사용할 수 있으며 "JOIN"문과 결합 할 수도 있습니다. 자세한 제한 사항과는 별도로, MySQL에서 서브 쿼리를 작성할 때 몇 가지 제한 사항이 있습니다.
한 문장 내에서 만들어진 하위 쿼리 수에 대한 제한조차 없습니다. 하위 쿼리에 대한 자세한 내용은 MySQL 참조 설명서 ( "리소스"절 참조)에서 찾을 수 있습니다.
예제
이름과 성을 가진 테이블과 우편 목록의 회원 주소와 우편 번호, 도시, 주 및 우편 번호가있는 테이블 두 개가 있다고 가정하십시오. 브라질리아에 거주하는 회원의 이름을 찾으려면 여러 개의 "선택"문장을 사용할 수 있습니다. 첫 번째는 브라질리아의 CEP를 추구합니다.
FROM 코드에서 선택 위치 : "BRASILIA"GO
그런 다음 각 우편 번호에 "선택"을 사용하십시오.
SELECT 이름, 성 이름 FROM 주소 cep = [codecep] GO
이 방법은 시간이 많이 걸리고 실수를하기 쉽습니다. 특히 우편 번호가 너무 많으면 우편 번호를 잃어 버리기 쉽습니다. 이 작업을 완료하는 더 쉬운 방법은 첫 번째 문장을 두 번째 문장의 하위 쿼리로 사용하는 것입니다.
SELECT 이름, 성 이름 FROM 주소 cep = (SELECT cep FROM codes where where state = "BRASILIA") GO
이 쿼리는 브라질리아에 거주하는 메일 링리스트의 모든 회원을 표시합니다.