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

Anonim

Truy vấn phụ là gì?

Truy vấn phụ là một truy vấn chọn được chứa bên trong một truy vấn khác. Truy vấn chọn bên trong thường được sử dụng để xác định kết quả của truy vấn chọn bên ngoài.

Hãy xem xét cú pháp truy vấn phụ -

Một phàn nàn chung của khách hàng tại Thư viện Video MyFlix là số lượng phim thấp. Ban quản lý muốn mua phim cho thể loại có số lượng phim ít nhất.

Bạn có thể sử dụng một truy vấn như

SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);

Nó cho một kết quả

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

Trên đây là một dạng của Row Sub-Query . Trong các truy vấn phụ như vậy, truy vấn bên trong chỉ có thể cho MỘT kết quả. Các toán tử được phép khi làm việc với truy vấn con hàng là [=,>, =, <=,,! =,]

Hãy xem xét một ví dụ khác,

Giả sử bạn muốn Tên và Số điện thoại của các thành viên đã thuê phim và chưa trả lại. Khi bạn nhận được Tên và Số điện thoại, bạn sẽ gọi cho họ để nhắc nhở. Bạn có thể sử dụng một truy vấn như

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ả. Trên đây là loại T thể tiểu quer y.

Cho đến bây giờ chúng ta đã thấy hai truy vấn, bây giờ chúng ta hãy xem một ví dụ về truy vấn ba !!!

Giả sử ban quản lý muốn thưởng cho thành viên trả lương cao nhất.

Chúng tôi có thể chạy một truy vấn như

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ả sau:

Truy vấn phụ Vs tham gia!

Khi so sánh với Joins, các truy vấn phụ rất dễ sử dụng và dễ đọc. Chúng không phức tạp như Tham gia

Do đó, những người mới bắt đầu sử dụng SQL thường được sử dụng.

Nhưng các truy vấn phụ có vấn đề về hiệu suất. Đôi khi, việc sử dụng một phép nối thay vì một truy vấn phụ có thể giúp bạn tăng hiệu suất lên đến 500 lần.

Đưa ra một lựa chọn, bạn nên sử dụng JOIN trên một truy vấn phụ.

Truy vấn phụ chỉ nên được sử dụng như một giải pháp dự phòng khi bạn không thể sử dụng hoạt động JOIN để đạt được những điều trên

Tóm lược

  • Truy vấn con là các truy vấn được nhúng bên trong một truy vấn khác. Truy vấn nhúng được gọi là truy vấn bên trong và truy vấn vùng chứa được gọi là truy vấn bên ngoài.
  • Truy vấn phụ dễ sử dụng, mang lại tính linh hoạt cao và có thể dễ dàng chia nhỏ thành các thành phần logic duy nhất tạo nên truy vấ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, truy vấn con vô hướng, hàng và bảng.
  • Truy vấn phụ vô hướng chỉ trả về một hàng và một cột duy nhất.
  • Truy vấn phụ hàng chỉ trả về một hàng nhưng có thể có nhiều hơn một cột.
  • Truy vấn con trong bảng có thể trả về nhiều hàng cũng như nhiều cột.
  • Truy vấn con cũng có thể được sử dụng trong các truy vấn CHÈN, CẬP NHẬT và XÓA.
  • Đối với các vấn đề về hiệu suất, khi nói đến việc lấy dữ liệu từ nhiều bảng, bạn nên sử dụng JOIN thay vì truy vấn con. Truy vấn phụ chỉ nên được sử dụng với lý do chính đáng.