select @offset:=(((1 - 1) * 20));
select @id:=id+1 from archive order by id desc limit @offset, 1;
select id,category_id,title,tags,summary,text,visit_count,comment_count,publish_date from archive where id<@id order by id desc limit 20下边这个单独执行就可以
select @offset:=(((1 - 1) * 20));
select @id:=id+1 from archive order by id desc limit @offset, 1;不知道为何?

解决方案 »

  1.   

    SELECT @OFFSET:=(((1 - 1) * 20));
    SET @asql=CONCAT('select @id:=id+1 from `archive` order by id desc limit ',@OFFSET,', 1');
    PREPARE stml FROM @asql;
    EXECUTE stml;
    SELECT id,category_id,title,tags,summary,TEXT,visit_count,comment_count,publish_date FROM ARCHIVE WHERE id<@id ORDER BY id DESC LIMIT 20
      

  2.   

    LIMIT要跟常量,不能用变量,必须用动态执行的方法
    select @offset:=(((1 - 1) * 20));
     select @id:=id+1 from archive order by id desc limit @offset, 1;
    在MYSQL 5.5下提示出错