Multiple Row Subquery | Sử dụng Subquery Multiple Row

Multiple row subqueries (subqueries nhiều hàng) trong SQL là các subquery trả về nhiều hàng dữ liệu. Các subquery này thường được sử dụng với các toán tử như IN, ANY, ALL, EXISTS để kiểm tra một tập hợp các giá trị.

Multiple Row Subquery | Sử dụng Subquery Multiple Row

Cách Sử Dụng Multiple Row Subqueries

1. Sử dụng với toán tử IN

Toán tử IN được sử dụng để kiểm tra xem một giá trị có nằm trong tập hợp giá trị được trả về bởi subquery hay không.

Ví dụ: Tìm tất cả các nhân viên làm việc trong các phòng ban có tên là ‘Sales’ hoặc ‘Marketing’.

SELECT employee_id, first_name, last_name, department_id
FROM employees
WHERE department_id IN (SELECT department_id
FROM departments
WHERE department_name IN ('Sales', 'Marketing'));

2. Sử dụng với toán tử ANY hoặc SOME

Toán tử ANY (hoặc SOME) được sử dụng để so sánh một giá trị với bất kỳ giá trị nào trong tập hợp được trả về bởi subquery.

Ví dụ: Tìm tất cả các nhân viên có lương cao hơn mức lương của bất kỳ nhân viên nào trong phòng ban 30.

SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE salary > ANY (SELECT salary
FROM employees
WHERE department_id = 30);

3. Sử dụng với toán tử ALL

Toán tử ALL được sử dụng để so sánh một giá trị với tất cả các giá trị trong tập hợp được trả về bởi subquery.

Ví dụ: Tìm tất cả các nhân viên có lương cao hơn mức lương của tất cả các nhân viên trong phòng ban 30.

SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE salary > ALL (SELECT salary
FROM employees
WHERE department_id = 30);

4. Sử dụng với toán tử EXISTS

Toán tử EXISTS được sử dụng để kiểm tra sự tồn tại của các hàng trong tập hợp kết quả trả về bởi subquery.

Ví dụ: Tìm tất cả các nhân viên có quản lý (manager).

SELECT employee_id, first_name, last_name
FROM employees e
WHERE EXISTS (SELECT 1
FROM employees m
WHERE m.employee_id = e.manager_id);

Một vài Ví Dụ sử dụng subquery

Ví Dụ 1: Sử dụng IN

Tìm các nhân viên làm việc trong các phòng ban có tên bắt đầu bằng chữ ‘S’.

SELECT employee_id, first_name, last_name, department_id
FROM employees
WHERE department_id IN (SELECT department_id
FROM departments
WHERE department_name LIKE 'S%');

Ví Dụ 2: Sử dụng ANY

Tìm các nhân viên có lương lớn hơn mức lương trung bình của bất kỳ phòng ban nào.

SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE salary > ANY (SELECT AVG(salary)
FROM employees
GROUP BY department_id);

Ví Dụ 3: Sử dụng ALL

Tìm các nhân viên có lương cao hơn mức lương cao nhất của tất cả các nhân viên trong phòng ban 20.

SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE salary > ALL (SELECT salary
FROM employees
WHERE department_id = 20);

Ví Dụ 4: Sử dụng EXISTS

Tìm các nhân viên làm việc trong các phòng ban có ít nhất một nhân viên có chức danh ‘Salesman’.

SELECT employee_id, first_name, last_name, department_id
FROM employees e
WHERE EXISTS (SELECT 1
FROM employees s
WHERE s.job_id = 'SA_MAN' AND s.department_id = e.department_id);

Toán tử phù hợp: Sử dụng các toán tử phù hợp như IN, ANY, ALL, EXISTS để xử lý tập hợp nhiều hàng.

Multiple row subqueries là một công cụ mạnh mẽ trong SQL, cho phép bạn xử lý và so sánh dữ liệu từ các tập hợp nhiều hàng. Chúng rất hữu ích trong nhiều ngữ cảnh khác nhau và giúp bạn thực hiện các truy vấn phức tạp một cách hiệu quả. Sử dụng các toán tử như IN, ANY, ALL, và EXISTS một cách hợp lý sẽ giúp bạn tận dụng tối đa sức mạnh của subqueries nhiều hàng.

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận