子查询比较测试(=、<>、<.<=、>、>=)是简单比较测试的修改后的版本。这两者的唯一区别在于:在子查询比较测试中,在运算符之后的表达式是子查询。此测试用于将来自主查询的某行中的值与子查询生成的单个 值进行比较。
下面的查询包含一个子查询比较测试的示例:
SELECT name, description, quantity FROM product WHERE quantity < 2 * ( SELECT avg(quantity) FROM sales_order_items)
| name | description | quantity |
|---|---|---|
| Tee Shirt | Tank Top | 28 |
| Baseball Cap | Wool cap | 12 |
| Visor | Cloth Visor | 36 |
| Visor | Plastic Visor | 28 |
| ... | ... | ... |
以下子查询从 sales_order_items 表检索单个值,即每个客户订单的每一类型的产品的平均数量。
SELECT avg(quantity) FROM sales_order_items
然后,主查询将每一库存产品的数量与该值进行比较。
比较测试中的子查询必须恰好返回一个值。请看以下查询,其子查询从 sales_order_items 表中提取两列:
SELECT name, description, quantity FROM product WHERE quantity < 2 * ( SELECT avg(quantity), max (quantity) FROM sales_order_items)
它返回错误 [子查询只允许一个选择列表项]。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。