在MySQL中的LIMIT子句中使用变量

在MySQL中的LIMIT子句中使用变量

我正在编写一个存储过程,其中有一个名为my_size的输入参数,它是一个INTEGER。我希望能够LIMITSELECT声明中的子句中使用它。显然这是不支持的,有没有办法解决这个问题?

# I want something like:SELECT * FROM some_table LIMIT my_size;# Instead of hardcoding a permanent limit:SELECT * FROM some_table LIMIT 100;


红颜莎娜
浏览 2207回答 3
3回答

绝地无双

对于那些不能使用MySQL 5.5.6+并且不想编写存储过程的人,还有另一种变体。我们可以使用ROWNUM在subselect上添加where子句。SET&nbsp;@limit&nbsp;=&nbsp;10;SELECT&nbsp;*&nbsp;FROM&nbsp;( &nbsp;&nbsp;SELECT&nbsp;instances.*,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@rownum&nbsp;:=&nbsp;@rownum&nbsp;+&nbsp;1&nbsp;AS&nbsp;rank&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;instances,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SELECT&nbsp;@rownum&nbsp;:=&nbsp;0)&nbsp;r)&nbsp;d&nbsp;WHERE&nbsp;rank&nbsp;<&nbsp;@limit;
打开App,查看更多内容
随时随地看视频慕课网APP