Một truy vấn con trong SQL (SubQuery) là một truy vấn được chứa trong một truy vấn khác. Truy vấn bên trong thường được sử dụng để xác định kết quả của truy vấn bên ngoài. Cùng xem ứng dụng của SubQuery trong truy vấn dữ liệu ở MySQL như nào nhé!
Trong đó:
Ví dụ 1: Một số khiếu nại phổ biến của khách hàng tại Thư viện video MyFlix là số lượng tiêu đề phim ít. Ban quản lý muốn mua một thể loại phim có tiêu đề ít nhất.
Bạn có thể sử dụng một truy vấn như sau:
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Kết quả như sau:
Hãy xem cách truy vấn này hoạt động:
Trên đây là truy vấn con hàng ( Row SubQuery ) . Trong các truy vấn con như vậy, truy vấn bên trong chỉ có thể cung cấp 1 kết quả. Các phép toán được phép sử dụng khi làm việc với các truy vấn con là [=,>, =, <= ,,! =,]
Ví dụ 2:
Giả sử bạn muốn Tên và số điện thoại của của những người đã thuê phim và chưa trả lại chúng. Khi bạn nhận được Tên và Số điện thoại, bạn gọi cho họ để nhắc nhở.
Bạn có thể sử dụng một truy vấn như sau:
SELECT full_names, contact_number
FROM members
WHERE membership_number IN
(SELECT membership_number
FROM movierentals
WHERE return_date IS NULL);
Hãy xem cách truy vấn này hoạt động
Trong trường hợp này, truy vấn bên trong trả về nhiều hơn một kết quả. Đó gọi là truy vấn con bảng ( Table sub-query).
Ví dụ 3: Cho đến bây giờ chúng ta đã thấy hai truy vấn, bây giờ hãy thử một ví dụ với ba truy vấn.
Ban quản lý muốn thưởng cho thành viên sử dụng dịch vụ nhiều nhất.
Chúng ta có thể chạy một truy vấn như sau:
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Truy vấn trên cho kết quả như sau
Khi so sánh với Join trong SQL, các truy vấn con rất dễ sử dụng và dễ đọc. Chúng không phức tạp như Join
Do đó chúng thường được sử dụng bởi những người mới bắt đầu SQL.
Nhưng các truy vấn con có vấn đề về hiệu suất. Nếu sử dụng lênh Join thay vì dùng truy vấn con đôi khi có thể giúp bạn tăng hiệu suất lên tới 500 lần.
Lời khuyên các bạn nên sử dụng Join thay vì truy vấn con.
Các truy vấn con chỉ nên được sử dụng làm giải pháp dự phòng khi bạn không thể sử dụng thao tác lệnh Join để thực hiện những điều trên.
Chúc các bạn thành công!
Khóa học giúp bạn làm chủ ngôn ngữ truy vấn dữ liệu phổ biến SQL từ cơ bản đến nâng cao. Từ đó có thể tự tin xây dựng, truy vấn, và tối ưu hóa các cơ sở dữ liệu phức tạp, hỗ trợ phân tích, làm báo cáo và ra quyết định kinh doanh một cách hiệu quả.
Đăng ký học thử để trải nghiệm ngay hôm nay!