Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 使用子查询 » 测试子查询

 

子查询比较测试

子查询比较测试(=、<>、<、<=、>、>=)是在简单比较测试基础上进行修改后所得到的版本。这两者的唯一区别在于:在子查询比较测试中,在运算符之后的表达式是子查询。此测试用于将主查询某行中的值与子查询生成的单个 值进行比较。

示例

下面的查询包含一个子查询比较测试的示例:

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);

它返回错误 [子查询只允许一个选择列表项]。