sqlserver选择列表中的列 'Book.book_total' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
时间: 2024-05-27 22:12:13 浏览: 231
解决大于5.7版本mysql的分组报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
5星 · 资源好评率100%
这个错误是因为 SQL Server 要求在使用聚合函数(如 SUM、AVG、COUNT 等)时,选择列表中的非聚合列必须包含在 GROUP BY 子句中。例如,如果您想计算每个作者的图书总数,您可能会编写以下查询:
SELECT author_name, SUM(book_total)
FROM Book
GROUP BY author_name
在这个查询中,我们使用了聚合函数 SUM(book_total) 来计算每个作者的图书总数,并且在选择列表中选择了 author_name 和 book_total 两列。但是,如果我们不在 GROUP BY 子句中包含 book_total 列,SQL Server 将无法确定该如何处理 book_total 列的值,并返回上述错误。
要解决这个错误,您需要根据需要将非聚合列包含在 GROUP BY 子句中,或者使用聚合函数来计算这些列的值。例如,以下查询将检索每个作者的平均图书价格:
SELECT author_name, AVG(book_price)
FROM Book
GROUP BY author_name
在这个查询中,我们使用了 AVG(book_price) 聚合函数来计算每个作者的平均图书价格,并且在选择列表中选择了 author_name 和 book_price 两列。由于 book_price 列是一个非聚合列,我们需要在 GROUP BY 子句中包含它。
阅读全文