在我的一些SQL代码中,有一个简单的部分:
(SELECT
t1.col1,
...,
t1.coln
FROM
(SELECT
t2.col1, ..., t2.coln
FROM
t2location
) t1
GROUP BY
t1.col1,
...,
t1.coln
) t0
在那里我想“哇这个GROUP BY
在这做什么,它只对它进行排序”。所以我删除了它,但随后它彻底改变了结果表。
此表t0
随后与另一个具有相似组的表外连接(数据较少,但列数相同)。
我的问题是:
改变数据的
GROUP BY
做了什么?
数据集非常大,我无法确切地指出代码的确切情况。
答案 0 :(得分:2)
您似乎对GROUP BY
和ORDER BY
感到困惑。 GROUP BY聚合您的数据,因此通常与汇总函数(如SUM或AVERAGE)一起使用。 GROUP BY通过选择特定列中的disctict值并将它们分组在一起来工作。虽然GROUP BY可能确实对数据进行排序,但不能保证。 ORDER BY用于排序。
答案 1 :(得分:2)
基本做SELECT DISTINCT t1.col, ..., t1.coln
:
例如:
col1 | col2 | col3
---------|--------|------
some | thing | cool
some | thing | cool
some | thing | cool
some | thing | else
wow | thats | cool
没有GROUP BY
的查询将返回五行。 使用 GROUP BY
会返回三行:看起来像第1行,第4行和第5行