选择组中的所有列会引发错误

发布于 2024-12-09 10:32:49 字数 507 浏览 0 评论 0 原文

我对 Northwind 数据库 Products Table 运行了一个查询,如下所示

select * from Northwind.dbo.Products GROUP BY CategoryID 并且遇到了错误。我相信您也会遇到同样的错误。那么我需要执行的正确语句是什么来根据类别 ID 对所有产品进行分组。

编辑:这确实有助于理解很多

http://weblogs.sqlteam.com/jeffs/archive/2007/07/20/but-why-must-that-c​​olumn-be-contained-in-an-aggregate.aspx

I ran a query against Northwind database Products Table like below

select * from Northwind.dbo.Products GROUP BY CategoryID and i was hit with a error. I am sure you will also be hit by same error. So what is the correct statement that i need to execute to group all products with respect to their category id's.

edit: this like really helped understand a lot

http://weblogs.sqlteam.com/jeffs/archive/2007/07/20/but-why-must-that-column-be-contained-in-an-aggregate.aspx

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半边脸i 2024-12-16 10:32:49

您需要使用聚合函数,然后按任何非聚合列进行分组。

我建议阅读GROUP BY

You need to use an Aggregate function and then group by any non-aggregated columns.

I recommend reading up on GROUP BY.

笔落惊风雨 2024-12-16 10:32:49

如果您在查询中使用 GROUP BY,则 SELECT 语句中的所有项目都必须包含在聚合函数中,例如 Sum()< /code> 或 Count(),否则它们也需要包含在 GROUP BY 子句中。

由于您使用的是 SELECT *,因此这相当于列出 SELECT 中的所有列。

因此,要么将它们全部列在 GROUP BY 中,尽可能对其余部分使用聚合函数,或者仅选择 CategoryID

If you're using GROUP BY in a query, all items in your SELECT statement must either be contained as part of an aggregate function, e.g. Sum() or Count(), else they will also need to be included in the GROUP BY clause.

Because you are using SELECT *, this is equivalent to listing ALL columns in your SELECT.

Therefore, either list them all in the GROUP BY too, use aggregating functions for the rest where possible, or only select the CategoryID.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文