用时间间隔的函数限制每30分钟在数据库中查询前10条记录!
select * top 10 from table where datediff('minute',开始时间,getdate()
)>=30

解决方案 »

  1.   

    楼上的兄弟!你写的是MSSQL的语句!还是很感谢,能不能有人写错完整的MYSQL的语句。
      

  2.   

    neil_cn(Neil) 
    一次性取480条,每30分钟推荐10条
    ============================
    先写入临时库,推荐的时候就删除掉临时库里面的记录
      

  3.   

    每日先随机取出 480 个ID,存入数组(文件缓存)。
    每30分钟依次取十个ID。
      

  4.   

    mysql 的临时表性能还是很不错di
      

  5.   

    基本上可以这样作:
    1.用PHP生成一个随机字符串,形式基本上是:
    $a1=" id=";
    for($i=0;$i<10;$i++){
      $a2 = 生成一个不重复的随机数;
      $a1 .= "$a2 or "

    //这里要处理一下$a1,因为字符串最后是 or 要想办法去掉,也以加上点东西,比如:
    $a1 .= " id=0";然后:
    2.update tbl_name set is_recommend=0;
    3.update tbl_name set is_recommend=1 where $a1;
      

  6.   

    有没有人能写个比较完整的MYSQL语句啊 ?大家讨论一下!
      

  7.   

    MYSQL 产生 10 个<1000的随即数
    declare @count int
    set @count =0
    while @count <10
    begin
    if @num
    print cast (rand()*1000 as int)
    set @count=@count+1
    end
      

  8.   

    纠正错误:
    declare @count int
    set @count =0
    while @count <10
    begin
    print cast (rand()*1000 as int)
    set @count=@count+1
    end
      

  9.   

    我要问下,如果,我说的是如果!如果达到推举的要求了,但是,是你读取480条数据之后达到了推举的要求之后呢?怎么办?zysoft17(瓷匠[zsss.blog.sohu.com])的方法比较可行,我再改进下。我也使用了零时表,不过我用的和zysoft17的不一样,我用零时表纪录已发表过的随书的id。首先,使用while 和rand(id)得到随机的20条id 。select id,bookname from 数据表 where id not in (select id from 零时表) order by rand() limit 1
    这样,就可以随机得到一组数据了。把得到的得到的这个纪录存放到数组之前,我们要验证两步,一步是验证这次生成的数据是不是已经在前面被生成过了(这次生成的数据中)。第二步就是验证是不是存在于零时表里面(实际上,sql语句已经得到了,不过,不放心啊。如果上面的语句执行不利,要去掉where的部分呢!)
    条件由楼主决定吧,反正循环部分能够得到的办法太多了
      

  10.   

    忘记说了,如果纪录不在零时表里面,要insert一个进去啊!不然……
      

  11.   

    每30分钟页面自动刷新,?i=<?=$i+1?>
    $i=$_GET["i"]
    $SQL="selcet * from table limit 10*".$i.",10*".$i."+9"
      

  12.   

    --首先必须创建临时表b 与 a 表相同 b中b1列(下有说明)不是标识列
    --b中就是随即产生的10个记录时间设定可以建立触发器30分钟触发删除b表并执行以下:
    declare @count int
    declare @num int--a表总记录
    select @num= count(*) from a
    set @count=0
    declare @a_num int --推荐书目数 while @count <10
    begin 
    select @a_num= count(*) from b
    print @a_num
      if @a_num <10
    begin insert into b
    select *  from a where b1=cast(rand()*rand()*@num*2 as int)--b1是自增列
    set @count=@count+1
    end
    else if @num<>@count
    begin
    set @count=@num
    end
    else
    begin
    delete from b
    set @count=0 
    end
    end
      

  13.   

    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    dd
    d
    d
    d
    d
    d
    d
    d
    dd
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    d
    dddd
    d
    d
    d
    d
      

  14.   

    越说越远neil_cn(Neil)的帖子不是都说完了