网友学堂(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() 函数 使用方法