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 的用法 » 查询和修改数据 » 查询数据 » 集合函数

 

组合 WHERE 和 HAVING 子句

有时,您可以使用 WHERE 子句或 HAVING 子句指定同一组行。在这种情况下,其中一种方法并不比另一种方法更有效。优化程序始终会自动分析您输入的每条语句,并选择执行该语句的有效方法。最好使用能够最清晰地描述所需结果的语法。通常,这意味着在前面的子句中消除不需要的行。

示例

要列出其订单数超过 55 且 ID 大于 1000 的所有销售代表,请输入以下语句。

SELECT SalesRepresentative, COUNT( * )
FROM SalesOrders
WHERE SalesRepresentative > 1000
GROUP BY SalesRepresentative
HAVING count( * ) > 55
ORDER BY SalesRepresentative;

以下语句会产生相同的结果。

SELECT SalesRepresentative, COUNT( * )
FROM SalesOrders
GROUP BY SalesRepresentative
HAVING count( * ) > 55 AND SalesRepresentative > 1000
ORDER BY SalesRepresentative;

SQL Anywhere 会检测到这两条语句都描述了相同的结果集,从而高效地执行各条语句。