0

是否通过更改结果中的行数在组中包含额外的列?

我正在对表 A(col1,col2....col9) 进行选择查询,我首先包括

select col1,col2,col3 
from A where col1 = (condition) 
group by col1, col2, col3

这给我带来了一定数量的结果。

现在我将查询更改为

`select col1,col2,col3, col8,col9 
from A where col1=(condition) 
group by col1,col2,col3, col8,col9' 

我在结果中得到了不同数量的行。可能的解释是什么?

4

3 回答 3

1

通过对这些列进行分组,实质上,您可以使分组列上的结果不同。因此,如果存在共有 1、2、3、18 和 19 列的行,它们将被折叠在一起。

于 2013-07-24T15:28:07.333 回答
1

如果 col1、col2 和 col3 的组合不是唯一的,则可以有多行具有这三者的相同组合。

如果发生这种情况,并且这些重复项具有不同的 col8 和/或 col9 值,则按这些额外列进行分组将产生更多行。

请注意,您可以使用select distinct来获得相同的结果。group by如果您想在其他列上进行聚合,例如计算总和或计数,则特别使用,如下所示:

select 
  col1, col2, col3, 
  sum(col8) as total8 
from A 
group by col1, col2, col3

上面的查询将为您提供 col1、col2 和 col3 的每个唯一组合以及每个组合的所有 col8 的总和。

于 2013-07-24T15:28:18.797 回答
0

添加 GROUP BY 并不是真正解决此问题的正确方法,因为它不是按它尝试全面分组的一列进行分组,因此根据您查询的数据,您最终可能会得到更少或更多的结果。

请问您对列进行分组的原因是什么?

于 2013-07-24T15:30:00.327 回答