Thực hiện truy vấn lồng nhau và truy vấn con (subquery)
Trong MySQL, bạn có thể thực hiện các truy vấn phức tạp bằng cách sử dụng truy vấn lồng nhau và truy vấn con (subquery). Truy vấn lồng nhau cho phép bạn thực hiện một truy vấn bên trong một truy vấn khác, trong khi truy vấn con cho phép bạn sử dụng kết quả của một truy vấn trong truy vấn khác. Dưới đây là một số ví dụ về cách thực hiện các truy vấn phức tạp bằng cách sử dụng truy vấn lồng nhau và truy vấn con trong MySQL:
Truy vấn lồng nhau
Trong ví dụ này, chúng ta sẽ tìm các khách hàng có tổng số đơn hàng lớn hơn một ngưỡng được chỉ định:
SELECT customer_name
FROM customers
WHERE customer_id IN (
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING SUM(order_amount) > 1000
);
Truy vấn lồng nhau này sẽ trả về tên của các khách hàng có tổng số đơn hàng lớn hơn 1000.
Truy vấn con
Trong ví dụ này, chúng ta sẽ tìm các khách hàng có đơn hàng trong danh sách các đơn hàng có giá trị cao nhất:
SELECT customer_name
FROM customers
WHERE customer_id IN (
SELECT customer_id
FROM orders
WHERE order_amount IN (
SELECT MAX(order_amount)
FROM orders
)
);
Truy vấn con này sẽ trả về tên của các khách hàng có đơn hàng có giá trị cao nhất.
Kết hợp truy vấn lồng nhau và truy vấn con
Trong ví dụ này, chúng ta sẽ tìm các khách hàng có tổng số đơn hàng lớn hơn một ngưỡng được chỉ định và có đơn hàng trong danh sách các đơn hàng có giá trị cao nhất:
SELECT customer_name
FROM customers
WHERE customer_id IN (
SELECT customer_id
FROM orders
WHERE order_amount IN (
SELECT MAX(order_amount)
FROM orders
)
GROUP BY customer_id
HAVING SUM(order_amount) > 1000
);
Truy vấn này sẽ trả về tên của các khách hàng có tổng số đơn hàng lớn hơn 1000 và có đơn hàng có giá trị cao nhất.
Các ví dụ trên chỉ là một số trường hợp sử dụng truy vấn lồng nhau và truy vấn con trong MySQL. Bạn có thể kết hợp chúng và tùy chỉnh theo yêu cầu cụ thể của mình.