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

时间:2013-04-18 09:54:29

标签: sql sql-server group-by

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

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时,它无效。

4 个答案:

答案 0 :(得分:2)

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

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')

答案 1 :(得分:1)

您的SELECT语句不包含任何aggregate functions,因此GROUP BY语句不合适。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

这个link有一个例子可以帮助您理解这个概念。