MySQL 5.6.1中的LIMIT子句中的变量不起作用

时间:2016-06-02 21:32:00

标签: mysql sql

根据这个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    |
+-----------+

1 个答案:

答案 0 :(得分:1)

documentation非常清楚。在存储程序中,limit可以将变量/参数作为参数:

  

LIMIT子句可用于约束返回的行数   通过SELECT语句。 LIMIT需要一个或两个数字参数,   这些必须都是非负整数常数   例外:

     
      
  • 在预准备语句中,可以使用?指定LIMIT参数?占位符标记。

  •   
  • 在存储的程序中,可以使用整数值例程参数或局部变量指定LIMIT参数。

  •   

您的代码不是存储程序。因此,您需要使用常量。