今天在看到一个分页的语句视频的时候视频中是用的sql来实现的分页,所以语句中出现了top关键字    sql语句:select top 3 * from user where uername not in(select top 6 username from user)   但是本地计算机中是mysql数据库,我知道mysql中不支持top支持的limit我想把这句转换成limit,结果一直转换报错,
   可能是对sql的了解少了,top 3 是返回3行的查询结果,我就是想的用 limit 1 ,3也是来返回3条结果。
    mysql语句:select * from user limit 1,3 where username not in(select username from user limit 1,6)
   
    但是这条语句有错误:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'where
 username not in(select username from user limit 1,6)' at line 1    网上查了也没查到好的结果,所以想到这来请教下各位,关于limit的使用。  在线等待。  谢谢各位了!

解决方案 »

  1.   

    这个世界上,没有比limit更简单的分页语句了。limit不需要子查询。IMHO,不能实现limit或类似语法的数据库,都是不完整的select * from user limit 3, 3其中,第一个3代表offset,即跳过多少行。第二个3代表,一共select 3行。
      

  2.   

    http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#select
      

  3.   

    这个语句似乎没什么意义。简单分页,必须order by 吧。
    select * from user order by username limit 6, 3
    就完了啊。
    表示取从第7行开始,取3行。
      

  4.   

    select * from user where username not in (select username from user where id between 2 and 7) limit 1,3;不能在子查询里面用limit ,并且limit 放到sql的最后;
      

  5.   

       恍然大悟,原来这就是limit和top的区别,前面几位大哥果断说中,厉害。
     
        这句话我将牢记: 这个世界上,没有比limit更简单的分页语句了。limit不需要子查询。IMHO,不能实现limit或类似语法的数据库,都是不完整的    就是改变后面两个参数就能实现分页了:
    String sql = "select * from t_user limit " + (currentPage - 1)* FinalParm.PAGER_ECORD + "," + FinalParm.PAGER_ECORD + "";   完成了!  谢谢大家!  谢谢!
      

  6.   

    不客气,BTW,常量名下划线放错地方了吧
      

  7.   


    FinalParm.PAGER_ECORD   最后我是把他改成了 pageSize 每一页显示多少条信息。   功能已经完成了,现在在中总结!    再次谢谢大家,本人分只有那么点,不能给大家高分,见谅!