GROUP BY 可以用来对查询结果分组。分组的目的就是将具有相同属性的内容归位一类,以方便统计。
以常用的论坛威力,在论坛里可分为版区,版块,子版块,二级子版块等,而实际应用中,一个论坛可能会被站长划分为多个分区,每个分区中有多个子版块,而子版块里可能还分有二级,甚至是多级的子版块。
在 Phpwind 论坛系统里,版块的类型信息是存放在 pw_forums 这个表里的,比如 category 表示的是分区,forum 表示的是普通的子版块,而 sub 表示的是第一级子版块,sub2 表示的是第 2 级子版块,以此类推。
如果我们只是用下面的语句:
[Plain Text] 纯文本查看 复制代码 SELECT type FROM pw_forums;
那么得到的结果将显得凌乱而难以统计:
从上图可以看到,有许多个 forum 和 category 的相同记录,这表明了该论坛有多个分区和多个版块。这时,可以用 GROUP BY 将这些相同的 forum 和 category 归为一类:
[Plain Text] 纯文本查看 复制代码 SELECT type FROM pw_forums GROUP BY type;
更进一步,我们还希望统计整个论坛共有多少个版区和版块以及子版块,使用下面的命令:
[Plain Text] 纯文本查看 复制代码 SELECT COUNT(*) AS num,type FROM pw_forums GROUP BY type;
|