我可以在LIMIT偏移中使用MySQL函数吗?

时间:2015-10-16 10:17:42

标签: mysql limit offset mariadb

我可以在LIMIT偏移量中使用MySQL函数吗? 像:

SELECT * FROM sites WHERE ... LIMIT FLOOR(1 + RAND() * (SELECT COUNT(*) FROM sites)) , 1

1 个答案:

答案 0 :(得分:1)

不,你不能直接直接LIMITOFFSET值必须是常量。

来自the MySQL docs的引文:

  

LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负的整数常量(使用预准备语句时除外)。

您可以使用预准备语句和变量:

SELECT @offset:=FLOOR(1 + RAND() * COUNT(*)) FROM sites;
PREPARE STMT FROM 'SELECT * FROM sites WHERE ... LIMIT ?, 1';
EXECUTE STMT USING @offset;