2017-09-06 61 views
0

我想在mysql查询中使用变量:为了通过与SQL参数

SET @resultsPerPage = 10; 
SET @offset = 0; 

,并在查询:

ORDER BY u.USER_NAME ASC LIMIT @offset, @resultsPerPage 

我收到的错误是:

错误代码:1064.您的SQL语法错误;

有什么建议吗?

+0

你不是试图通过参数来订购。你试图通过参数进行限制。你不能。无论如何,不​​是这样的。 – Strawberry

+1

您不能在MySQL语句的LIMIT子句中使用变量。你必须考虑解决方法。你究竟在努力实现什么? –

+0

好吧,我试图实现2件事: 1)使用params订购 2)使用数据库分页,稍后 – Chen

回答

3

可能的解决方法实现分页以下列方式使用变量:

SET @resultsPerPage = 10; -- Display 10 records per page 
SET @offset = 0;   -- Display the first page 

SELECT * 
FROM (
    SELECT @rn := @rn + 1 AS rn, u.* 
    FROM mytable AS u 
    CROSS JOIN (SELECT @rn := 0) 
    ORDER BY u.USER_NAME) AS t 
WHERE t.rn >= @offset * @resultsPerPage + 1 AND 
     t.rn <= (@offset + 1) * @resultsPerPage