SQL分组与排序

时间:2011-05-17 14:44:51

标签: php sql html

首先,这是我的表group_student

中的行/数据
g_id |user_id |group_no |is_leader
4   1   3   0
3   9   5   0
5   10  5   0
6   11  1   0

我在将表格中的行分组时遇到了一些问题。现在我正在使用它 脚本。

SELECT *
FROM (groups_student)
group by group_no

它给了我这个结果:

g_id |user_id |group_no |is_leader
6   11  1   0
4   1   3   0
3   9   5   0

缺少g_id 5。我想如果你使用group by它会按行分隔行 group_no。在我的group_by中添加另一个列字段会这样做,但它会搞砸 我的观点,因为我使用的是foreach循环。如何显示g_id 5并将其分组。

3 个答案:

答案 0 :(得分:1)

执行SQL分组时,所有包含与组规范COLLAPSE匹配的字段的行都将成为一行。通常,为该分组返回的值是遇到的第一个值,在您的情况下是g_id = 3

如果要检索所有行,并将“group”值放在一起,则应使用SORT子句。这将返回所有行,并将排序值“分组”在一起。

在SQL中进行分组是为了在组成员中使用聚合函数(求和,计数,平均值等)。排序适用于您不想聚合的事情,但保留相似的记录。

由于您的查询中没有聚合函数,因此group子句更像是“select distinct”。

答案 1 :(得分:1)

您想要退出查询究竟是什么?为了更好地了解GROUP BY的工作原理,请执行以下操作:

SELECT GROUP_CONCAT(g_id)
FROM (groups_student)
group by group_no

g_id 5只是因为它被“折叠”而丢失了。

答案 2 :(得分:0)

使用ORDER BY而不是GROUP BY(在这种情况下) 阅读有关差异的更多信息here