我使用下面的查询,但它显示了一些重复的项目。所以我使用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
时,它无效。
答案 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有一个例子可以帮助您理解这个概念。