sqlserver从mysql取数_Mysql间隔取数据,实现sqlserver的row_number()函数

1. 使用临时表

CREATE DEFINER=`root`@`%` PROCEDURE `sp_getMonitorInfo`(IN d_itemId INT, IN d_configId INT, d_count_num INT )

begin

set @count = 0;

set @num = 0;

SELECT @count :=count(1) FROM better.MonitorInfo where itemId=d_itemId and configId=d_configId;

IF @count<300

THEN

SELECT id,cpu,cpu1,cpu2,cpu3,diskRead,diskWrite,memory,networkReceive,networkSend,time,configId,itemId FROM MonitorInfo where itemId=itemId and configId=configId;

ELSE

SET @num= round(@count/d_count_num,0);

select @num;

create temporary table tmp_MonitorInfo

(

tmp_id int(4) primary key not null auto_increment,

id  int(4) not null,

cpu int,

cpu1 int,

cpu2 int,

cpu3 int,

diskRead int,

diskWrite int,

memory int,

networkReceive int,

networkSend int,

time  varchar(40),

configId int,

itemId int

);

insert into tmp_MonitorInfo(id,cpu,cpu1,cpu2,cpu3,diskRead,diskWrite,memory,networkReceive,networkSend,time,configId,itemId)

select id,cpu,cpu1,cpu2,cpu3,diskRead,diskWrite,memory,networkReceive,networkSend,time,configId,itemId from MonitorInfo

where itemId=d_itemId and configId=d_configId;

select  id,cpu,cpu1,cpu2,cpu3,diskRead,diskWrite,memory,networkReceive,networkSend,time,configId,itemId from tmp_MonitorInfo

where tmp_id%@num=0;

drop table tmp_MonitorInfo;

END IF;

end

2. 使用临时变量 USE `better`; DROP procedure IF EXISTS `sp_getMonitorInfo_2`; DELIMITER $$ USE `better`$$ CREATE DEFINER=`root`@`%` PROCEDURE `sp_getMonitorInfo_2`(IN d_itemId INT, IN d_configId INT, d_count_num INT ) begin set @count = 0; set @num = 0; set @count = (select count(1) FROM better.MonitorInfo where itemId=d_itemId and configId=d_configId); IF @count<300 THEN    SELECT id,cpu,cpu1,cpu2,cpu3,diskRead,diskWrite,memory,networkReceive,networkSend,time,configId,itemId FROM MonitorInfo where itemId=itemId and configId=configId; ELSE SET @num= round(@count/d_count_num,0); set @i = 0; select * from ( select @i :=@i + 1 as tmp_id,id,cpu,cpu1,cpu2,cpu3,diskRead,diskWrite,memory,networkReceive,networkSend,time,configId,itemId from MonitorInfo  where itemId=d_itemId and configId=d_configId) aa where aa.tmp_id%@num=0; END IF; end$$ DELIMITER ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值