下面的例子查询同 类书中价格大于平均价格的所有书的书名。对于 t1 中每一个可能的记录，SQL Server 都将执行这个子查询，如果某条记录的价格大于计算出的平均价格，就把这条记录放到结果集中。你不需要在语句中显式地使用分组语句，因为计算平均价格的子查询中，WHERE 子句已经对书的类型进行了限制。

USE pubs

SELECT t1.type, t1.title, t1.price

FROM titles AS t1

WHERE t1.price > ( SELECT AVG(t2.price) FROM titles AS t2

WHERE t1.type = t2.type)

GO

下面的例子产生的结果集和前面的例子相同，但它用的是含有 GROUPBY 和HAVING 子句的子连接语句。

USE pubs

SELECT t1.type, t1.title, t1.price

FROM titles AS t1

INNER JOIN titles AS t2

ON t1.type = t2.type

GROUP BY t1.type, t1.title, t1.price

HAVING t1.priCe > AVG(t2.price)

GO

注意：可以用相关子查询模拟一个 JOIN 和 HAVING 子句产生的结果集，但查询处理器实现它们的方式可能不同。