我能在LIMIT偏移量中使用MySQL函数吗?

5

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

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

3
抱歉,你不能直接这样做。LIMIT和OFFSET值必须是常数。
引用自MySQL文档
“LIMIT子句可用于限制SELECT语句返回的行数。LIMIT需要一个或两个数字参数,这两个参数都必须是非负整数常量(除非使用预处理语句)。”
但是,您可以使用准备好的语句和变量:
SELECT @offset:=FLOOR(1 + RAND() * COUNT(*)) FROM sites;
PREPARE STMT FROM 'SELECT * FROM sites WHERE ... LIMIT ?, 1';
EXECUTE STMT USING @offset; 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接