Subquery (hay còn gọi là truy vấn con) là một truy vấn được lồng bên trong một truy vấn khác. Subquery cho phép người dùng truy vấn dữ liệu từ một hoặc nhiều bảng dựa trên kết quả của truy vấn chính.
Truy vấn con có một số đặc điểm như sau:
– Phải được đặt trong dấu ngoặc đơn
– Có thể được đặt trong nhiều mệnh đề như: SELECT, FROM, WHERE,…
– Được thực hiện trước truy vấn chính
Trong bài viết này, hãy cùng UniTrain tìm hiểu cách sử dụng Subquery trong mệnh đề WHERE nhé!
Xét 2 bảng dữ liệu như sau:
– Bảng 1 có tên là employee_engagement, bao gồm các cột: Employee ID (ID Nhân viên), Engagement_Score (Mức độ gắn kết).
– Bảng 2 có tên là employee, bao gồm các cột: EmpID (ID Nhân viên), FirstName (Tên), LastName (Họ), ADEmail (Địa chỉ Email) và Title (Chức danh)
Giả sử chúng ta muốn lấy thông tin của 1 nhân viên với mức độ gắn kết cao nhất. Đầu tiên, chúng ta sẽ lọc ra Employee ID từ bảng employee_engagement với truy vấn con:
SELECT Employee ID, Engagement Score
FROM employee_engagement
ORDER BY Engagement Score DESC
LIMIT 1
Như vậy, nhân viên cần tìm có ID là 1006. Sau đây, chúng ta sẽ chèn truy vấn con này vào truy vấn chính:
SELECT EmpID, FirstName, LastName, ADEmail, Title
FROM employee
WHERE EmpID = (
SELECT Employee ID
FROM employee_engagement
ORDER BY Engagement Score DESC
LIMIT 1)
Truy vấn này sẽ trả về tất cả các thông tin của nhân viên có ID là 1006:
Giả sử chúng ta muốn lấy thông tin về top 5 nhân viên với mức độ gắn kết cao nhất, chúng ta có truy vấn con như sau:
SELECT Employee ID
FROM employee_engagement
ORDER BY Engagement Score DESC
LIMIT 5
Để lấy thông tin của 5 nhân viên trên, chúng ta sẽ dùng IN trong mệnh đề WHERE, thay vì dấu bằng:
SELECT EmpID, FirstName, LastName, ADEmail, Title
FROM employee.csv
WHERE EmpID IN (
SELECT Employee ID
FROM employee_engagement
ORDER BY Engagement Score DESC
LIMIT 5)
Xem thêm:
Khóa học Ứng dụng SQL trong Xử lý dữ liệu
Khóa học Excel for HR Professionals