» 网友学堂 » Mysql教程 » mysql中group by 组合 order by使用方法
mysql中group by 组合 order by使用方法
作者:问天 发表时间:2007-4-22 23:09 阅读:3630次 在百度搜索相关内容

网友学堂(http://study.jokcn.com)原创内容,转载请保留。

今天遇到了一个表hits,是记录IP来源的表。hits表中的键如下
id readid ip time

可以看出,该表记录了来源的IP时间,及浏览的内容。

目前的查询是一周内的浏览用户。

那么我们就要取当前time()值,获得是1177245885,此数值通过gmdate() 函数可以还原成标准时间格式。
相关教程:gmdate() 函数 使用方法

一周内即为 time() - 7 * 24 *3600 = 1176641085

mysql >select * from hits where time >'1176641085'


另外,本人为了看到一周浏览最多的readid,使用起来就比较麻烦了,必须进行group by readid 可获得mysql语句如下

mysql >select * from hits where time >'1176641085' group by readid


而目前此种状态下,sql语句并未进行排序,仅仅是按照readid进行无重复排列。排序上,我们以次数最多readid为例子进行说明。

缓冲一句,我们引入SUM

mysql >select id,readid,ip,time,sum(readid) from hits where time >'1176641085' group by readid

执行完毕,可以看到sun(readid)数值,但是这个数值和readid的本身联系很大,无法进行排序

mysql >select id,readid,ip,time,sum(readid)/readid from hits where time >'1176641085' group by readid

如此就取到了readid的最大,排序的时候注意一下,sum(readid)/readid 此数值为运算组合,因此order by 无法直接引用,正确语句为。

mysql >select id,readid,ip,time,sum(readid)/readid from hits where time >'1176641085' group by readid order by 'sum(readid)/readid'.

相关教程:gmdate() 函数 使用方法