【发布时间】:2015-10-16 10:17:42
【问题描述】:
我可以在LIMIT 偏移量中使用 MySQL 函数吗?
喜欢:
SELECT * FROM sites WHERE ... LIMIT FLOOR(1 + RAND() * (SELECT COUNT(*) FROM sites)) , 1
【问题讨论】:
标签: mysql limit offset mariadb
我可以在LIMIT 偏移量中使用 MySQL 函数吗?
喜欢:
SELECT * FROM sites WHERE ... LIMIT FLOOR(1 + RAND() * (SELECT COUNT(*) FROM sites)) , 1
【问题讨论】:
标签: mysql limit offset mariadb
不,您不能直接这样做。 LIMIT 和 OFFSET 值必须是常量。
来自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;
【讨论】: