根据这个previously asked question我的理解是我可以在mysql版本5.5.6 +中运行这样的查询:
set @limit_start=10;
set @limit_offset=10;
select
ID,
AGE,
GENDER
from
PLAYER
limit
@limit_start, @limit_offset;
但是当我像这样运行它时,我得到一个错误。
mysql> set @limit_start=10;
Query OK, 0 rows affected (0.00 sec)
mysql> set @limit_offset=10;
Query OK, 0 rows affected (0.00 sec)
mysql> select
-> ID
-> from
-> PLAYER_GAME_RESULT
-> limit
-> @limit_start, @limit_offset;
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 '@limit_start, @limit_offset' at line 6
这是我检查mysql版本
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.6.21 |
+-----------+
答案 0 :(得分:1)
documentation非常清楚。在存储程序中,limit
可以将变量/参数作为参数:
LIMIT子句可用于约束返回的行数 通过SELECT语句。 LIMIT需要一个或两个数字参数, 这些必须都是非负整数常数 例外:
在预准备语句中,可以使用?指定LIMIT参数?占位符标记。
在存储的程序中,可以使用整数值例程参数或局部变量指定LIMIT参数。
您的代码不是存储程序。因此,您需要使用常量。