Một truy vấn con 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.
Hãy xem xét cú pháp truy vấn con
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
C 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à [=,>, =, <= ,,! =,]
Hãy thử một ví dụ khác,
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
C 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)
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, 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
Nội dung liên quan