统计查询
网站的建设创新互联建站专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为成都塔吊租赁等企业提供专业服务。
在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括:
方法 说明
Count
统计数量,参数是要统计的字段名(可选)
Max
获取最大值,参数是要统计的字段名(必须)
Min
获取最小值,参数是要统计的字段名(必须)
Avg
获取平均值,参数是要统计的字段名(必须)
Sum
获取总分,参数是要统计的字段名(必须)
用法示例:
获取用户的最大积分:
$maxScore = $User-max('score');
order by可以按一个或多个(最多16个)字段排序查询结果,可以是升序(ASC)也可以是降序(DESC),如果缺省,则是升序。order by中如果定义了多个字段,则按照字段的先后顺序排序。
比如: order by * desc, * acs ;
*为条件,条件的优先级和条件的先后顺序一致,order by通常放在SQL语句的最后。
扩展资料:
order by排序的用法:
1,ORDER BY 中关于NULL的处理缺省处理
Oracle在Order by 时认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前。也可以使用nulls first 或者nulls last 语法来控制NULL的位置。
如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)
2,多列排序
单列升序:selectcolumn_name from table_name order by column_name; (默认升序,即使不写ASC)
单列降序:select column_name from table_name order by column_name desc。
多列升序:select column_one, column_two from table_name order by column_one, column_two。
多列降序:select column_one, column_two from table_name order by column_one desc, column_two desc。
多列混合排序:select column_one, column_two from table_name order by column_one desc, column_two asc。
参考资料来源:百度百科-order by
如果有类似于id,时间的排序字段就很简单了,思路就是按排序字段倒序查询出来,然后limit取5条就行了。sql:SELECT * FROM userlist ORDER BY id DESC LIMIT 5;
如果没有,你就得分两步,首先获取总数,然后最用limit取最后5条。
1、SELECT COUNT(*) FROM userlist; //获取总数
2、SELECT * FROM userlist LIMIT (总数-5),5
试编写代码示例如下:
?php
//连接数据库
$db = new mysqli('localhost','test','test','test');
if ($db-connect_errno) {
printf("连接数据库失败: %s\n", $db-connect_error);
exit();
}
//对数据库根据时间字段按降序排序,并抽取前面的40条记录
$data = $db-query('select * from 数据表名 order by 时间字段名 desc limit 40');
$rows = $data-fetch_all(MYSQLI_ASSOC);
//随机生成 5 条记录数组
$rand_arr = array_rand($rows, 5);
//根据生成的随机数组,输出记录
for($i=0;$i5;$i++)
{
echo $rows[$rand_arr[$i]]['name'].' | '.$rows[$rand_arr[$i]]['description'].' | '.$rows[$rand_arr[$i]]['update_time'].'br/';
}
?
示例运行截图: