【问题标题】:How to use User-Defined Variables in the limit statement?如何在limit语句中使用用户定义的变量?
【发布时间】:2017-07-29 20:25:02
【问题描述】:

我想要一个通用格式的分页查询,而不是硬代码,这样:

set @pageSize = 10; set @pageIndex = 2;

select * from city LIMIT (@pageIndex-1)*@pageSize, @pageSize;

但是mysql告诉我:

[Err] 1064 - 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在第 1 行的 '(@pageIndex-1)*@pageSize, @pageSize' 附近使用

这有什么问题?

【问题讨论】:

标签: mysql pagination limit


【解决方案1】:

您不能将用户定义的变量与 LIMIT 一起使用。

MySQL Doc 说 “用户变量可以在大多数情况下使用 表达式是允许的。这目前不包括上下文 明确需要文字值,例如在 LIMIT 子句中 SELECT 语句或 LOAD DATA 的 IGNORE N LINES 子句 声明”

但是您可以使用 '用户定义函数''stored procedure' 或 'plain SQL 通过计算 @rowid 并在 where 子句中使用它来实现类似的功能'。

【讨论】:

    猜你喜欢
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多