Teradata 简明教程

Teradata - SubQueries

子查询基于其他表中的值从一个表中返回记录。它是另一个查询中的 SELECT 查询。称为内部查询的 SELECT 查询首先执行,而结果则由外部查询使用。其一些显著特征:

  1. 查询可以有多个子查询,并且子查询可以包含其他子查询。

  2. 子查询不返回重复的记录。

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

Syntax

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

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

Example

考虑以下 Salary 表格。

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