Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL Server

SQL Server에서 SUBQUERY 자식 쿼리

다음 문서에서는 구문 및 예제와 함께 SQL Server에서 하위 쿼리를 사용하는 방법을 보여줍니다.

SQL의 하위 쿼리(하위 쿼리)란 무엇입니까?

SQL Server에서 하위 쿼리는 다른 쿼리에 있는 쿼리입니다. SQL 명령에서 쿼리를 생성할 수 있습니다. 이러한 하위 쿼리는 WHERE, FROM 또는 SELECT 절에 있습니다.

참고:

  1. 하위 쿼리는 INNER QUERY 또는 INNER SELECT라고도 합니다.
  2. 하위 쿼리를 포함하는 기본 쿼리를 OUTER QUERY 또는 OUTER SELECT라고 합니다.

WHERE 절

보통 하위 쿼리는 WHERE 절에 있습니다. 이러한 하위 쿼리를 중첩 쿼리 또는 하위 쿼리라고 합니다.

  SELECT s.sanph am_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.sanp ham_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 nhacu ng.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 MAX ong) 
FROM nhanvien n2
WHERE n1.nhanvie n_id = n2.nhanvien_id) truyvancon2

이 하위 쿼리는 별칭 truyvancon2와도 연결됩니다. 이것은 이 하위 쿼리 또는 해당 정보 필드를 참조하는 데 사용되는 이름입니다.

하위 쿼리가 단일 값을 반환하기 때문에 SELECT 절에 하위 쿼리를 배치하는 트릭이 사용됩니다. 그래서 서브쿼리에서 SUM, COUNT, MIN, MAX와 같은 합함수를 자주 사용합니다.