组功能无法在SQL服务器上运行

Group function not working on SQL server

我使用下面的查询,但它显示了一些重复的项目。 所以我使用group函数,但它不起作用。

1
2
3
4
5
6
7
8
9
SELECT p.productId, p.productName, p.catId, p.subCatId, p.productType,
       p.modelNo, p.picUrl, p.color, p.theme, p.productPrice, p.discountedPrice,
       p.quantity, p.details, p.mainPageDisplay, p.productPageDisplay,
       s.subCatId AS Expr1,
       s.subCatName, s.catId AS Expr2,
       s.rank, s.subCatName AS Expr3
FROM (products p INNER JOIN
      subCategories s ON p.catId = s.catId)
WHERE (p.color = 'red') GROUP BY p.productName

这个查询工作正常,但是当我添加group by时,它不起作用。


您不需要GROUP BY来选择不同的行,您需要DISTINCT

1
2
3
4
5
6
7
8
9
SELECT DISTINCT p.productId, p.productName, p.catId, p.subCatId, p.productType,
       p.modelNo, p.picUrl, p.color, p.theme, p.productPrice, p.discountedPrice,
       p.quantity, p.details, p.mainPageDisplay, p.productPageDisplay,
       s.subCatId AS Expr1,
       s.subCatName, s.catId AS Expr2,
       s.rank, s.subCatName AS Expr3
FROM (products p INNER JOIN
      subCategories s ON p.catId = s.catId)
WHERE (p.color = 'red')


您的SELECT语句不包含任何聚合函数,因此GROUP BY语句不合适。


SQL GROUP BY将列值聚合(合并和计算)为单个记录值。 GROUP BY需要运行计算的表列列表。

此链接有一个示例,以帮助您理解该概念。


您需要在GROUP BY子句中使用SELECT子句中的所有列,否则在SELECT关键字之后使用DISTINCT关键字。