【发布时间】:2011-05-09 08:19:42
【问题描述】:
SELECT * FROM user LIMIT (SELECT group_limit FROM groups WHERE groupid = 7471);
【问题讨论】:
SELECT * FROM user LIMIT (SELECT group_limit FROM groups WHERE groupid = 7471);
【问题讨论】:
这是来自MySQL Database Knowledge base:
LIMIT 子句可用于限制 SELECT 语句返回的行数。 LIMIT 接受一个或两个数字参数,它们都必须是非负整数常量(使用准备好的语句时除外)。
要使您的查询正常工作,您需要将其编写为准备好的语句,然后执行。
SET @a = (SELECT group_limit FROM groups WHERE groupid = 7471);
PREPARE STMT FROM 'SELECT * FROM user LIMIT ?';
EXECUTE STMT USING @a;
【讨论】:
从MySQL 8.0.2开始,支持ROW_NUMBER()窗口功能。在子查询的帮助下,这意味着您可以做一些接近问题要求的事情:
SELECT * FROM (
SELECT ROW_NUMBER() OVER(PARTITION BY 1) rownum, u.* FROM user u
) t
WHERE t.rownum <= (SELECT group_limit FROM groups WHERE groupid = 7471);
【讨论】: