Teradata - 子查询


子查询根据另一个表中的值返回一个表中的记录。它是另一个查询中的 SELECT 查询。首先执行称为内部查询的 SELECT 查询,然后将结果供外部查询使用。它的一些显着特征是 -

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

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

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

句法

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

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

例子

考虑下面的薪资表。

员工号 总的 扣除 网络支付
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