Làm thế nào để sử dụng SubQuery trong MySQL?

Nội dung được viết bởi G-LEARNING

Truy vấn con (SubQuery) là gì?

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

Hướng dẫn sử dụng MySQL SubQuery với các ví dụ

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ướng dẫn sử dụng MySQL SubQuery với các ví dụ

Hãy xem cách truy vấn này hoạt động

Hướng dẫn sử dụng MySQL SubQuery với các ví dụ

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ướng dẫn sử dụng MySQL SubQuery với các ví dụ

Hãy xem cách truy vấn này hoạt động

Làm thế nào để sử dụng SubQuery trong MySQL?

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

Làm thế nào để sử dụng SubQuery trong MySQL?

So sánh Truy vấn con và lênh Join !

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

Hướng dẫn sử dụng MySQL SubQuery với các ví dụ

Tóm lược

  • Truy vấn con là các truy vấn bên trong một truy vấn khác. Truy vấn con được gọi là truy vấn bên trong và truy vấn chính được gọi là truy vấn bên ngoài.
  • Các truy vấn con rất dễ sử dụng, tính linh hoạt cao và có thể dễ dàng chia thành các thành phần nhỏ rất logic nó rất hữu ích khi kiểm tra và gỡ lỗi các truy vấn.
  • MySQL hỗ trợ ba loại truy vấn con đó là truy vấn vô hướng, hàng và bảng.
  • Các truy vấn con vô hướng chỉ trả về một hàng đơn và cột đơn.
  • Các truy vấn con hàng chỉ trả về một hàng duy nhất nhưng có thể có nhiều hơn một cột.
  • Các truy vấn con bảng có thể trả về nhiều hàng cũng như các cột.
  • Các truy vấn con cũng có thể được sử dụng trong các truy vấn INSERT, UPDATE và DELETE.
  • Đối với các vấn đề về hiệu năng, khi cần lấy dữ liệu từ nhiều bảng, chúng tôi khuyên bạn nên sử dụng lệnh Join thay vì truy vấn con. 

Chúc các bạn thành công

Đánh giá bài viết này

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông