Teradata - SubQueries
Một truy vấn con trả về các bản ghi từ một bảng dựa trên các giá trị từ một bảng khác. Nó là một truy vấn SELECT trong một truy vấn khác. Truy vấn SELECT được gọi là truy vấn bên trong được thực thi đầu tiên và kết quả được sử dụng bởi truy vấn bên ngoài. Một số tính năng nổi bật của nó là -
Một truy vấn có thể có nhiều truy vấn con và truy vấn con có thể chứa một truy vấn con khác.
Truy vấn con không trả về các bản ghi trùng lặp.
Nếu truy vấn con chỉ trả về một giá trị, bạn có thể sử dụng toán tử = để sử dụng nó với truy vấn bên ngoài. Nếu nó trả về nhiều giá trị, bạn có thể sử dụng IN hoặc NOT IN.
Cú pháp
Sau đây là cú pháp chung của các truy vấn con.
SELECT col1, col2, col3,…
FROM
Outer Table
WHERE col1 OPERATOR ( Inner SELECT Query);
Thí dụ
Hãy xem xét bảng lương sau đây.
Nhân viên Không | Tổng | Khấu trừ | NetPay |
---|---|---|---|
101 | 40.000 | 4.000 | 36.000 |
102 | 80.000 | 6.000 | 74.000 |
103 | 90.000 | 7.000 | 83.000 |
104 | 75.000 | 5.000 | 70.000 |
Truy vấn sau xác định số nhân viên có mức lương cao nhất. SELECT bên trong thực hiện chức năng tổng hợp để trả về giá trị NetPay tối đa và truy vấn SELECT bên ngoài sử dụng giá trị này để trả về bản ghi nhân viên có giá trị này.
SELECT EmployeeNo, NetPay
FROM Salary
WHERE NetPay =
(SELECT MAX(NetPay)
FROM Salary);
Khi truy vấn này được thực thi, nó tạo ra kết quả sau.
*** Query completed. One row found. 2 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo NetPay
----------- -----------
103 83000