开发者社区 问答 正文

Mysql 中LIMIT有关问题?报错

需求:查询第5行之后所有数据

网上查询结果:LIMIT 5,-1

实际报错:

[Err] 1064 - 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 '-1' at line 5

请问各位这是为何?我该如何实现这个需求?

展开
收起
爱吃鱼的程序员 2020-06-22 14:49:58 1215 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    语法错误,limit[m,]n  语法是这样的,m:为起始行,从0开始,且可以省略不写,n:为查询记录数,不能为负数,你可以查询id>你要排除的5个id的最大值或者id<你要排除的5个id的最小值
    回复<aclass='referer'target='_blank'>@iSea:非常感谢,感谢给了我一个思路回复<aclass='referer'target='_blank'>@iSea:如果数据很大,肯定会有些影响的,这样写不知道能否符合你的需求:SELECTSUM(PROLIKE)FROMPRODUCTSWHEREBUSINESSID=3andPROLIKE<(SELECTPROLIKEFROMPRODUCTSORDERBYPROLIKEDESCLIMIT4,1)ORDERBYPROLIKEDESC回复<aclass='referer'target='_blank'>@iSea:原来没有这个语法了,如果这个n数字太大会不会对性能有影响回复<aclass='referer'target='_blank'>@wang_liran:如果仅仅是求和的话,你可以把-1改为比你的数据足够大的数,回复<aclass='referer'target='_blank'>@wang_liran:5.0之后的版本没有这个语法了。贴上完整的SQL
    SELECTSUM(PROLIKE)FROMPRODUCTSWHEREBUSINESSID=3ORDERBYPROLIKEDESCLIMIT5,-1感觉楼主是写php写多了...你的问题可以通过存储过程来实现,具体参考这个http://zhidao.baidu.com/link?url=ts4ZmzQXQQMi0Uj6wcmMwBMWOGNEjCE7I75L8lR9t-MSYWuoasqcEthAka2rUpDlXQviYAeuFwTcYnqPKoCIXq这个思路我想过,可是太麻烦了,我想知道为什么官方要取消这个语法?没有负数的。。

    limitM,N

    意思是偏移为M,再取N条记录。

    limit0,2 从第1条记录开始取2条

    所以你的需求实质上是limit4,1

    2020-06-22 14:50:14
    赞同 展开评论