Truy vấn con SUBQUERY trong SQL Server
Bài viết dưới đây sẽ hướng dẫn cách dùng truy vấn con trong SQL Server cùng với cú pháp và các ví dụ.
Truy vấn con trong SQL (subquery) là gì?
Trong SQL Server, 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 các truy vấn trong lệnh SQL. Các truy vấn con này nằm trong mệnh đề WHERE, FROM hoặc SELECT.
Lưu ý:
- Truy vấn con còn được gọi là INNER QUERY hay INNER SELECT.
- Truy vấn chính mà chứa truy vấn con được gọi là OUTER QUERY hay OUTER SELECT.
Mệnh đề WHERE
Thông thường truy vấn con nằm trong mệnh đề WHERE. Các truy vấn con này gọi là truy vấn lồng nhau hay truy vấn phụ.
SELECT s.sanpham_id, s.sanpham_tenFROM sanpham sWHERE s.sanpham_id IN(SELECT htk.sanpham_idFROM hangtonkho htkWHERE htk.soluong >10);
Đây là đoạn truy vấn con trong lệnh SELECT nói trên:
(SELECT htk.sanpham_idFROM hangtonkho htkWHERE htk.soluong> 10);
Truy vấn con cho phép tìm các giá trị sanpham_id từ bảng hangtonkho có số lượng lớn hơn 10. Sau đó truy vấn con được 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 thành INNER JOIN như dưới đây.
SELECT s.sanpham_id, s.sanpham_tenFROM sanpham sINNER JOIN hangtonkho htkON s.sanpham_id = htk.sanpham_idWHERE htk.soluong > 10;
INNER JOIN sẽ trả về hiệu quả hơn truy vấn con ban đầu. Cũng cần lưu ý là không phải truy vấn con nào cũng viết lại bằng JOIN được.
Mệnh đề FROM
SELECT nhacung.nhacung_ten, truyvancon1.tong_slFROM nhacung,(SELECT nhacung_id, SUM(donhang.soluong) AS tong_slFROM donhangGROUP BY nhacung_id) truyvancon1WHERE truyvancon1.nhacung_id = nhacung.nhacung_id;
Ở ví dụ này chúng ta đã tạo truy vấn con trong mệnh đề FROM như sau:
(SELECT nhacung_id, SUM(donhang.soluong) AS tong_slFROM donhangGROUP BY nhacung_id) truyvancon1
Truy vấn con này cũng được gắn bí danh là truyvancon1. Đây sẽ là tên dùng để tham chiếu tới truy vấn con này hoặc bất kì trường thông tin nào của nó.
Mệnh đề SELECT
Thường truy vấn con đặt trong mệnh đề SELECT để tính toán bằng các hàm tổng như SUM, COUNT, MIN hay MAX nhưng không muốn tính trong truy vấn chính.
SELECT n1.ho, n1.ten,(SELECT MAX(luong)FROM nhanvien n2WHERE n1.nhanvien_id = n2.nhanvien_id) truyvancon2FROM nhanvien n1;
Dưới đây là truy vấn con được tạo trong ví dụ trên
(SELECT MAX(luong)FROM nhanvien n2WHERE n1.nhanvien_id = n2.nhanvien_id) truyvancon2
Truy vấn con này cũng được gắn bí danh là truyvancon2. Đây sẽ là tên dùng để tham chiếu tới 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 dùng là bởi truy vấn con trả về giá trị đơn. Đó là lý do các hàm tổng như SUM, COUNT, MIN hay MAX thường được dùng trong truy vấn con.
Bài trước: Toán tử EXCEPT trong SQL Server
Bài sau: Mệnh đề PIVOT trong SQL Server
Bạn nên đọc
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
Cũ vẫn chất
-

46 câu ca dao hài hước, châm biếm hay nhất
Hôm qua -

Cheat Aoe 2, mã lệnh Aoe 2 tất cả các bản đầy đủ nhất
Hôm qua -

Hướng dẫn thiết lập và quản lý FTP Server trên Windows 10
Hôm qua -

Cách đổi mật khẩu Wifi, đổi pass wifi VNPT, FPT, Tenda, TP-Link, Viettel trên máy tính, điện thoại
Hôm qua 27 -

Khắc phục tình trạng các phím chức năng không hoạt động trong Windows 10
Hôm qua -

Cách quản lý mật khẩu đã lưu trên Microsoft Edge: Xem, xóa, sửa, xuất
Hôm qua -

Cách tải Windows 11, download ISO Win 11 chính thức từ Microsoft
Hôm qua 71 -

Cách chèn emoji vào ảnh trên iPhone cực đơn giản
Hôm qua -

Biển số xe tại các quận huyện của Hà Nội và TPHCM
Hôm qua -

Cách xem phiên bản di động của một trang web bất kỳ trên máy tính
Hôm qua
Học IT
Công nghệ
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Hướng dẫn
Ô tô, Xe máy