다음 문서에서는 구문 및 예제와 함께 SQL Server에서 하위 쿼리를 사용하는 방법을 보여줍니다.
SQL의 하위 쿼리(하위 쿼리)란 무엇입니까?
SQL Server에서 하위 쿼리는 다른 쿼리에 있는 쿼리입니다. SQL 명령에서 쿼리를 생성할 수 있습니다. 이러한 하위 쿼리는 WHERE, FROM 또는 SELECT 절에 있습니다.
참고:
- 하위 쿼리는 INNER QUERY 또는 INNER SELECT라고도 합니다.
- 하위 쿼리를 포함하는 기본 쿼리를 OUTER QUERY 또는 OUTER SELECT라고 합니다.
WHERE 절
보통 하위 쿼리는 WHERE 절에 있습니다. 이러한 하위 쿼리를 중첩 쿼리 또는 하위 쿼리라고 합니다.
SELECT s.sanpham_id, s.sanpham_ten
FROM sanpham s
WHERE s.sanpham_id IN
(SELECT htk.sanpham_id
FROM hangtonkho htk
WHERE htk.soluong >
10);
위의 SELECT 문의 하위 쿼리 세그먼트입니다.
(SELECT htk.sanpham_id
FROM hangtonkho htk
WHERE htk.soluong
> 10);
하위 쿼리를 사용하면 hangtonkho 테이블에서 10보다 큰 숫자를 가진 sanpham_id 값을 찾을 수 있습니다. 그런 다음 하위 쿼리는 IN 조건을 사용하여 기본 쿼리의 결과를 필터링하는 데 사용됩니다. .
하위 쿼리는 아래와 같이 INNER JOIN으로 작성할 수 있습니다.
SELECT s.sanpham_id, s.sanpham_ten
FROM sanpham s
INNER JOIN hangtonkho htk
ON s.sanpham_id = htk.sanpham_id
WHERE htk.soluong > 10;
INNER JOIN은 원래 하위 쿼리보다 더 효율적으로 반환됩니다. JOIN에 의해 쿼리가 다시 작성되지 않는다는 점도 중요합니다.
FROM 절
SELECT nhacung.nhacung_ten, truyvancon1.tong_sl
FROM nhacung,
(SELECT nhacung_id, SUM(donhang.soluong) AS tong_sl
FROM donhang
GROUP BY nhacung_id) truyvancon1
WHERE truyvanco
n1.nhacung_id = nhacung.nhacung_id;
이 예에서는 FROM 절에 다음과 같이 하위 쿼리를 만들었습니다.
(SELECT nhacung_id, SUM(donhang.soluong) AS tong_sl
FROM donhang
GROUP BY nhacung
_id) truyvancon1
이 하위 쿼리는 별칭 truyvancon1과도 연결됩니다. 이 하위 쿼리 또는 해당 정보 필드를 참조하는 데 사용되는 이름입니다.
SELECT 절
일반적으로 하위 쿼리는 SUM, COUNT, MIN 또는 MAX와 같은 합계 함수로 계산하도록 SELECT 절에 설정되지만 기본 쿼리에서는 계산하지 않습니다.피>
SELECT n1.ho, n1.ten,
(SELECT MAX(luong)
FROM nhanvien n2
WHERE n1.nhanvien_id = n2.nhanvien_id) truyvancon2
FROM nhanvien n1
;
아래는 위의 예에서 생성된 하위 쿼리입니다.
(SELECT MAXong)
FROM nhanvien n2
WHERE n1.nhanvie
n_id = n2.nhanvien_id) truyvancon2
이 하위 쿼리는 별칭 truyvancon2와도 연결됩니다. 이것은 이 하위 쿼리 또는 해당 정보 필드를 참조하는 데 사용되는 이름입니다.
하위 쿼리가 단일 값을 반환하기 때문에 SELECT 절에 하위 쿼리를 배치하는 트릭이 사용됩니다. 그래서 서브쿼리에서 SUM, COUNT, MIN, MAX와 같은 합함수를 자주 사용합니다.