Computer >> Máy Tính >  >> Lập trình >> SQL Server

Truy vấn con SUBQUERY trong SQL Server

Bài viết sau sẽ hướng dẫn bạn cách sử dụng truy vấn con trong SQL Server cùng với cú pháp và ví dụ.

Truy vấn con trong SQL (truy vấn con) là gì?

Trong SQL Server, một truy vấn con là một truy vấn nằm trong một truy vấn khác. Bạn có thể tạo truy vấn trong các lệnh SQL. Các truy vấn con này nằm trong mệnh đề WHERE, FROM hoặc SELECT.

Lưu ý:

  1. Truy vấn con còn được gọi là QUERY INNER hoặc INNER SELECT.
  2. Truy vấn chính có chứa truy vấn con được gọi là OUTER QUERY hoặc OUTER SELECT.

Mệnh đề WHERE

Thông thường truy vấn con nằm trong mệnh đề WHERE. Những truy vấn con này được gọi là truy vấn lồng nhau hoặc truy vấn con.

  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);

Đây là phân đoạn truy vấn phụ trong câu lệnh SELECT ở trên:

  (SELECT htk.sanp ham_id 
FROM hangtonkho htk
WHERE htk.soluong > 10);

Truy vấn con cho phép tìm các giá trị sanpham_id từ bảng hangtonkho với một số lớn hơn 10. Sau đó, truy vấn con được sử dụng để lọc kết quả từ truy vấn chính bằng điều kiện IN .

Truy vấn con có thể được viết dưới dạng INNER JOIN như hình dưới đây.

  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 sẽ trả về hiệu quả hơn truy vấn con ban đầu. Điều quan trọng cần lưu ý là không có truy vấn nào được viết lại bởi JOIN.

Mệnh đề TỪ

  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;

Trong ví dụ này, chúng tôi đã tạo truy vấn con trong mệnh đề FROM như sau:

  (SELECT nhacung _id, SUM(donhang.soluong) AS tong_sl 
FROM donhang
GROUP BY nhacung _id) truyvancon1

Truy vấn con này cũng được liên kết với bí danh truyvancon1. Đây sẽ là tên được sử dụng để chỉ truy vấn con này hoặc bất kỳ trường thông tin nào của nó.

Mệnh đề CHỌN

Thông thường truy vấn con được đặt trong mệnh đề SELECT để tính toán bằng các hàm tổng như SUM, COUNT, MIN hoặc MAX nhưng không muốn đếm trong truy vấn chính.

  SELECT n1.ho, n1 .ten, 
(SELECT MAX(luong)
FROM nhanvien n2
WHERE n1.nhanvien_id = n2.nhanvien_id) truyvancon2
FROM nhanvien n1 ;

Dưới đây là truy vấn con được tạo trong ví dụ trên

  (SELECT MAX ong) 
FROM nhanvien n2
WHERE n1.nhanvie n_id = n2.nhanvien_id) truyvancon2

Truy vấn con này cũng được liên kết với bí danh truyvancon2. Đây sẽ là tên được sử dụng để chỉ truy vấn con này hoặc bất kỳ trường thông tin nào của nó.

Thủ thuật đặt truy vấn con trong mệnh đề SELECT được sử dụng vì truy vấn con trả về một giá trị duy nhất. Đó là lý do tại sao các hàm tổng như SUM, COUNT, MIN hoặc MAX thường được sử dụng trong các truy vấn con.