SQL 2 HAVING语法

时间:2017-12-04 12:24:54

标签: sql

我的教授正在教sql 2,并使用类似下面代码的语句进入查询:

HAVING SUM(column) > subselect 

其中subselect类似于SELECT AVG(column) FROM ...

此子选择只返回一个值,但我无法理解如何将函数(sum)与子选择进行比较。子选择应该返回一个表,对吧?那么如何将表与值进行比较呢?这对我来说没有意义。

提前致谢。

2 个答案:

答案 0 :(得分:2)

SQL具有标量子查询的概念。这些子查询只返回一列,最多只返回一行。标量子查询几乎可以在所有可以使用单个值(“标量”)的情况下使用。

如果标量子查询没有返回任何行,则该值将被视为NULL

(我应该补充一些数据库支持元组。元组是一组标量值,被视为单个值。在这样的数据库中,“标量”子查询可以返回多个值,但这些转换为元组。这与被问到的问题无关;元组只是“单一”值的另一个例子。)

答案 1 :(得分:1)

原则上,如果你以关系的方式看待它,你是对的。 但SQL是一个行业标准,它允许将标量值与结果表进行比较的缩写只有一行和一列。

根据具体实现,它甚至允许将标量与值列表(具有多个值的列)进行比较,尽管您实际应该编写entityId,但通常不使用ALL关键字

这是where和having子句中的有效语法