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

标签 mysql limit clause variables

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

# I want something like:
SELECT * FROM some_table LIMIT my_size;

# Instead of hardcoding a permanent limit:
SELECT * FROM some_table LIMIT 100;

最佳答案

对于那些不能使用 MySQL 5.5.6+ 并且不想编写存储过程的人,还有另一种变体。我们可以在带有 ROWNUM 的子选择上添加 where 子句。

SET @limit = 10;
SELECT * FROM (
  SELECT instances.*, 
         @rownum := @rownum + 1 AS rank
    FROM instances, 
         (SELECT @rownum := 0) r
) d WHERE rank < @limit;

关于mysql - 在 MySQL 的 LIMIT 子句中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620826/

相关文章:

php - mysql 的多个下拉菜单

php - 对表的sql条件查询

zend-framework - Zend framework SQL select查询构造(ORDER BY)

sql - 为带有子查询的查询优化 SQL "Where"子句

Mysql 服务未在 WAMP 中启动

Java 线程限制,JVM 9

mysql - 限价和单价 - 分组

process - 使用Upstart设置内存消耗限制

MYSQL IN 子句仅返回第一个值组合的结果

c# - DataGrid ASP.net C# 中的中型 Blob