环境 php+mysql
要求  随机抽取连续的N条记录 N比如为3 ,同时要求抽取的N条记录的时间是连续的,
比如抽取连续3条记录为18:00  19:00  20:00符合
13:00 15:00 16:00 虽然为连续3条记录但不符合时间差
     yysj       
2013-01-05 13:00:00               
2013-01-05 15:00:00        
2013-01-05 16:00:00  
2013-01-05 18:00:00        
2013-01-05 19:00:00        
2013-01-05 20:00:00
2013-01-05 22:00:00        
2013-01-05 23:00:00        
2013-01-06 00:00:00        
2013-01-06 01:00:00        
2013-01-06 02:00:00  
mysqlphp

解决方案 »

  1.   

    你的要求很特殊,一条sql解决不了
      

  2.   

    你这个要求蛮特殊的,实现起来破费周折,我说下思路
    首先取一个随机的基准点,假如是 15:00 ,那么接下来你要取得值应该是 16:00 17:00
    这里你要注意一下,如果你取得的这个基准点15:00已经是最后一条记录了,你该怎么办?有了基准点之后接下来的两条数据 你就可以分别加一小时得出来了,好了有了这三个数据的参照之后你就可以提取了,类似
    select ? from ? where time='基准点1' or  time='基准点2' or  time='基准点3'但是你还要应付突发状况,那就是假如只能取得两条数据或一条数据你该怎么办?
      

  3.   

    先用php算好需要取得数据  再作为条件值传进去行不 ?
      

  4.   

    select t1.t as d1, t2.t as d2, t3.t as d3 from hello as t1 
    left join hello as t2 on timestampdiff(HOUR, t2.t, t1.t) = 1 
    left join hello as t3 on timestampdiff(HOUR, t3.t, t2.t) = 1 
    where t2.t is not null and t3.t is not null 
    order by rand() limit 1
    然后你可以通过for N来动态生成SQL语句。这种方式效率很差,而且也不是最好的方案。
    MYSQL版有很多大牛可以解决你的困惑
      

  5.   

    同意楼上,感觉你可以把数据都取出来,然后用php去找你需要的,这样简单多了
      

  6.   

    数据多不?如果不多,就一次拿出来,然后在php里排序,随机取一个,然后再随机向前向后取,直到成功为止