www.yzc261.comphp如安在每个日期下表现数据;同mysql语句 优化功能

( www.yzc261.com )

@数据库设计
id pay_name pay_time(工夫戳int)

@怎样像图一样,定工夫对该表中断陈列,相反工夫的数据排在一同

@之前的方案是
首选group by(pay_time)失掉统统的工夫
在每个工夫下,循环统统的数据来对比工夫能否和以上工夫相称,但每次都要对比统统的工夫。
但如许糜费功能。

1、起主要给pay_time加上索引。

2、按照工夫从数据库中取出你需求的数据数量,select * from table where pay_time >=t1 and pay_time < t2 order by pay_time desc limit pageSize;

3、在前端对你的数据按照工夫中断分组。

SET sql_mode = ''; --不加这一条语句group by 会报错 ,加了又不太安全。发起再加个varchar范例的字段保管工夫,加了字段后就不用FROM_UNIXTIME()函数了

select *,FROM_UNIXTIME(a.pay_time,"%Y-%m-%d") as ptime 
FROM test a LEFT JOIN test b on 
FROM_UNIXTIME(a.pay_time,"%Y-%m-%d") = FROM_UNIXTIME(b.pay_time,"%Y-%m-%d")
 and a.id >= b.id GROUP BY a.id,a.pay_name,datas 
 HAVING count(b.id) <= 3 ORDER BY a.pay_time,a.id
count(b.id) <= 3 //这里的 3 是每个工夫段的条数

之后再对数据根据 ptime 中断分组就行了

(看完/读完)这篇文章有何感想! www.yzc261.com的分享…

发表评论

电子邮件地址不会被公开。 必填项已用*标注