子查询比较测试(=、<>、<、<=、>、>=)是在简单比较测试基础上进行修改后所得到的版本。这两者的唯一区别在于:在子查询比较测试中,在运算符之后的表达式是子查询。此测试用于将主查询某行中的值与子查询生成的单个 值进行比较。
下面的查询包含一个子查询比较测试的示例:
SELECT Name, Description, Quantity FROM Products WHERE Quantity < 2 * ( SELECT AVG( Quantity ) FROM SalesOrderItems ); |
name | Description | Quantity |
---|---|---|
Tee Shirt | Tank Top | 28 |
Baseball Cap | Wool cap | 12 |
Visor | Cloth Visor | 36 |
Visor | Plastic Visor | 28 |
... | ... | ... |
以下子查询从 SalesOrderItems 表中检索单个值,即单位客户订单每一类型产品的平均数量。
SELECT AVG( Quantity ) FROM SalesOrderItems; |
然后,主查询将每一库存产品的数量与该值进行比较。
比较测试中的子查询必须只返回一个值。假定有以下查询,其子查询从 SalesOrderItems 表提取两列:
SELECT Name, Description, Quantity FROM Products WHERE Quantity < 2 * ( SELECT AVG( Quantity ), MAX( Quantity ) FROM SalesOrderItems); |
它返回错误 [子查询只允许一个选择列表项
]。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |