日期:2014-05-17  浏览次数:20472 次

求一sql语句,最好执行效率高一些
有一个表 

ID    deviceID   statue  createdate
 1      1002       1     2013-12-20  01:00:52
 2      1003       0     2013-12-20  01:00:55
 3      1004       1     2013-12-20  01:01:42
 4      1002       0     2013-12-20  01:15:53
 5      1003       1     2013-12-20  01:15:57
 6      1004       1     2013-12-20  01:16:42
 7      1002       1     2013-12-20  01:30:53
 8      1003       0     2013-12-20  01:30:57
 9      1004       1     2013-12-20  01:31:43

上面的表记录了设备的运行状态,每隔15分钟写入一次,设备大约有1000个, 我要想要写一个存储过程,能够查询设备最后一次运行状态为0 ,但上一次运行状态为1的所有的设备列表

如上面表中 只需要查询出
 8      1003       0     2013-12-20  01:30:57   

谢谢

------解决方案--------------------
建表:


create table a(ID  int,  deviceID int,  statue int, createdate datetime)

insert into a
select 1      ,1002       ,1     ,'2013-12-20  01:00:52' union all
select  2      ,1003       ,0     ,'2013-12-20  01:00:55' union all
select  3      ,1004       ,1     ,'2013-12-20  01:01:42' union all
select  4      ,1002       ,0     ,'2013-12-20  01:15:53' union all
select  5      ,1003       ,1     ,'2013-12-20  01:15:57' union all
select &nb