2

我使用下面的查询,但它显示了一些重复的项目。所以我使用该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

4 回答 4

4

You don't need a GROUP BY for selecting distinct rows, you need 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')
于 2013-04-18T09:59:00.417 回答
1

Your SELECT statement doesn't contain any aggregate functions, so a GROUP BY statement is not appropriate.

于 2013-04-18T09:58:37.953 回答
0

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

于 2013-04-18T10:05:07.473 回答
0

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

这个链接有一个例子来帮助你理解这个概念。

于 2013-04-18T10:05:24.907 回答