如何在限制语句中使用用户定义的变量?

时间:2017-03-09 02:09:09

标签: mysql pagination limit

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

library(tidyverse)
rownames_to_column(df1, "rn") %>%
      gather(Species, Val, -rn) %>% 
      left_join(., df2, by = "Species") %>%
      na.omit() %>%
      group_by(rn, Order) %>% 
      summarise(Val = sum(Val))  %>%
      spread(Order, Val)

但是mysql告诉我:

  

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

这是什么问题?

2 个答案:

答案 0 :(得分:1)

可以通过

完成
    $limit=10;// define your variable 
    $sql_query="SELECT * FROM table_name LIMIT $limit";

答案 1 :(得分:0)

您不能将用户定义的变量用于LIMIT。

  

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

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