Teradata - 子查询

子查询根据另一个表中的值返回一个表中的记录。它是另一个查询中的 SELECT 查询。首先执行称为内部查询的 SELECT 查询,结果由外部查询使用。它的一些显著特点是 −

  • 一个查询可以有多个子查询,子查询可以包含另一个子查询。

  • 子查询不返回重复记录。

  • 如果子查询只返回一个值,则可以使用 = 运算符将其与外部查询一起使用。如果它返回多个值,则可以使用 IN 或 NOT IN。

语法

以下是子查询的通用语法。

SELECT col1, col2, col3,… 
FROM  
Outer Table 
WHERE col1 OPERATOR ( Inner SELECT Query);

示例

考虑以下工资表。

EmployeeNo Gross Deduction 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

以下查询确定薪水最高的员工编号。内部 SELECT 执行聚合函数以返回最大 NetPay 值,外部 SELECT 查询使用此值返回具有此值的员工记录。

SELECT EmployeeNo, NetPay 
FROM Salary 
WHERE NetPay =  
(SELECT MAX(NetPay)  
FROM Salary);

当执行此查询时,它会产生以下输出。

*** Query completed. One row found. 2 columns returned. 
*** Total elapsed time was 1 second.  
 EmployeeNo     NetPay 
-----------  ----------- 
    103         83000