group by :就是将数据以某个字段的值为“依据”,分到不同的“组别”里。通常都只进行一个字段的分组。
group by 字段1 排序方式1,字段2 排序方式2, .....
having子句
总结:
1)group by 分组可能会丢失数据,比如按某个电器的名字分组的时候,相同电器只会显示一个分组,不会显示多个
2)默认的排序方式是正序,如果要改为倒序加 desc
3)where是针对表的字段的值进行“条件判断”
having是只针对groupby之后的“组”数据进行条件判断,即
其不能使用:字段名>10
但可以使用:count(字段名)>10, 或 max(price) > 2000, 但如果字段是分组依据,也可以。
4)当然,通常也可以使用select中的有效的字段别名,比如:
select count(*) as f1 , max(f1) as f2 from tab1 group by f3 having f1 > 5 and f2 < 1000;
聚合函数
orderby子句:对前面取得的数据来指定按某个字段的大小进行排列(排序)
排序只有2种方式:
正序: ASC(默认值),可以省略
倒序: DESC
order by 排序字段1 [排序方式], 排序字段2 [排序方式], .....
limit子句:表示将前面取得的数据并前面排好之后(如果有),对之指定取得“局部连续的若干条”数据。
起始行号start:第一行的行号为0, 可以省略,则为默认行号(0)。
要取得的行数:如果结果集中从指定的行号开始到最后没有这么多行,则就只取到最后。
limit [起始行号start], 要取出的行数num
- 重要 :
此子句非常有用——主要用于网页上最常见的一个需求(现象):分页。
分页原理:
分页的前提:人为指定每页显示的条数,$pageSize = 3;
显示(取得)第1页数据:select * from 表名 limit 0, $pageSize;
显示(取得)第2页数据:select * from 表名 limit 3, $pageSize;
显示(取得)第3页数据:select * from 表名 limit 6, $pageSize;
.......
显示(取得)第n页数据:select * from 表名 limit (n-1)*$pageSize, $pageSize;
希望对大家有帮助!!