select * from messages where id not in(select id from messages order by id limit 0) and order by id limit 8
这样查询总是出错,说不能在子查询里使用limit ,请问为什么,应该怎么样使用?

解决方案 »

  1.   

    没错.....的确如此...
    分开两次 或者改结构..join查询~
    不过在explain里面看子查询出来的结果在主查询上面不使用索引...最后还是用分开两次的方法
      

  2.   

    select   id   from   messages   order   by   id   limit   0
    这句可是什么都没有啊。
    不过可以建立一个临时表
    create temporary table tmp select   id   from   messages   order   by   id   limit   0;
    select   *   from   messages   where   id   not   in (select * from tmp) and   order   by   id   limit   8
      

  3.   

    同意上帝看戏的做法 将order by前的and去掉 就可以了create   temporary   table   tmp   select  id  from    messages   order    by  id   limit  0; 
    select   * from  messages  where   id   not   in (select   *   from   tmp) order  by  id   limit   8