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