选择列表中的列 ‘***’ 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

好久么玩sql了,也好久木有敲代码了,尼玛,忘得都差不多了。

今天用SQL Server尝试实现一个SQL语句的时候,报了如标题所示的错误,为了避免下次犯同样的错误,现在把它记录下来。

Group的作用:

 指定由查询表达式(Select)返回的对象要分入的组。

 [ GROUP BY aliasedExpression [ ,...  n ] ] 
参数:
    aliasedExpression要对其执行分组的任何有效查询表达式。expression可以是属性或者是引用 FROM 子句所返回的属性的非聚合表达式。 GROUP BY 子句中的每一个表达式的求值结果必须为可比较相等性的类型。这些类型通常为标量基元类型,如数字、字符串和日期。不可按集合分组。备注:
    如果 SELECT 子句 <select list> 中包含聚合函数,则 GROUP BY 将计算每个组的汇总值。指定 GROUP BY 时,选择列表中任何非聚合表达式内的每个属性名都应包含在GROUP BY列表中,或者GROUP BY表达式必须与选择列表表达式完全匹配。
    使用Group By子句的时候,一定要记住下面的一些规则:
    (1)不能Group By非标量基元类型的列,如不能Group By text,image或bit类型的列;
    (2)Select指定的每一列都应该出现在Group By子句中,除非对这一列使用了聚合函数;
    (3)不能Group By在表中不存在的列;
    (4)进行分组前可以使用Where子句消除不满足条件的行;
    (5)使用Group By子句返回的组没有特定的顺序,可以使用Order By子句指定次序。

THE END
分享
二维码
打赏
海报
选择列表中的列 ‘***’ 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
好久么玩sql了,也好久木有敲代码了,尼玛,忘得都差不多了。 今天用SQL Server尝试实现一个SQL语句的时候,报了如标题所示的错误,为了避免下次犯同样的……
<<上一篇
下一篇>>