我的教授正在教sql 2,并使用类似下面代码的语句进入查询:
HAVING SUM(column) > subselect
其中subselect
类似于SELECT AVG(column) FROM ...
此子选择只返回一个值,但我无法理解如何将函数(sum
)与子选择进行比较。子选择应该返回一个表,对吧?那么如何将表与值进行比较呢?这对我来说没有意义。
提前致谢。
答案 0 :(得分:2)
SQL具有标量子查询的概念。这些子查询只返回一列,最多只返回一行。标量子查询几乎可以在所有可以使用单个值(“标量”)的情况下使用。
如果标量子查询没有返回任何行,则该值将被视为NULL
。
(我应该补充一些数据库支持元组。元组是一组标量值,被视为单个值。在这样的数据库中,“标量”子查询可以返回多个值,但这些转换为元组。这与被问到的问题无关;元组只是“单一”值的另一个例子。)
答案 1 :(得分:1)
原则上,如果你以关系的方式看待它,你是对的。 但SQL是一个行业标准,它允许将标量值与结果表进行比较的缩写只有一行和一列。
根据具体实现,它甚至允许将标量与值列表(具有多个值的列)进行比较,尽管您实际应该编写entityId
,但通常不使用ALL关键字
这是where和having子句中的有效语法