GROUP BY 语法:
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
实例
表结构如下:
BookComments
列 名 |
类型 |
长度 |
是否允许为空 |
说明 |
||
CommentsNo |
bigint |
8 |
否 |
主键 非负 自增 |
||
BookNo |
varchar |
50 |
否 |
外键 book表主键 |
||
|
Datetime |
是 |
评论生成时间 |
|||
Uid |
Varchar |
10 |
是 |
评论人ID |
||
Text |
Text |
是 |
评论内容 |
BookList表:
列 名 |
类 型 |
大 小 |
是否允许为空 |
说明 |
BookNo |
Varchar |
10 |
否 |
书号 主键 |
BookName |
Varchar |
200 |
否 |
书名 |
Auther |
Varchar |
200 |
否 |
作者 |
Introduction |
Text |
是 |
简介 |
Connection conn = DatabaseConn.getConnection(); //此处调用的是前面篇章中的连接池的方法
Statement stm = conn.createStatement();
ResultSet result=stm.executeQuery("" +
"select BookComments.BookNo,BookList.BookName,BookList.Auther," +
"COUNT(BookComments.BookNo) AS CountNo " +
"from BookComments,BookList " +
"where BookList.BookNo=BookComments.BookNo " +
"GROUP BY BookComments.BookNo,BookList.BookName,BookList.Auther " +
"order by CountNo desc ");
实现功能:统计图书的评论数,然后按照从多到少的顺序排列起来,首先使用BookNo将BookComments,BookList连接起来,然后将BookComments.BookNo,BookList.BookName,BookList.Auther这些列聚组,COUNT(BookComments.BookNo) AS CountNo统计不同的BookNo出现的次数,即实现记录评论的数量的目的