mysql查询最新记录 海量_MySql 查询最新60条记录

取每个ModuleName+Code组合最新的60条记录

sql1:效率慢,理解简单

select p.ModuleName,p.LogTime,p.Code,p.Throughput from pfmlog_RealTime p

inner join (select a.Code,a.LogTime from pfmlog_RealTime a left join pfmlog_RealTime b

on a.Code = b.Code and a.LogTime <= b.LogTime group by a.ModuleName,a.Code,a.LogTime

having count(b.LogTime) <= 60) b1

on p.Code = b1.Code and p.LogTime = b1.LogTime

order by p.ModuleName;

sql2:效率高

select a.ModuleName,a.IP,a.LogTime,a.Code,a.Throughput from(

select b.*,

if(@pcode=b.Code and @pname=b.ModuleName,@rank:=@rank+1,@rank:=1) as rank,

@pcode:=b.Code,

@pname:=b.ModuleName

from pfmlog_RealTime b,(select @pcode := null,@pname := null ,@rank:=0) c

order by b.code,b.ModuleName,b.LogTime desc) a

where rank<=60

这条sql在workbench中执行没有问题,但放到C#代码中,程序运行就报“sql Fatal error encountered during command execution”。

解决:在sql连接串的末尾添加“;Allow User Variables=true”

参考:http://bbs.csdn.net/topics/390636133?page=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值