【发布时间】:2009-08-20 22:16:05
【问题描述】:
假设我在 Select Query 中定义了一个别名“count”,并且我想将返回的数量限制为 count / 5(或表的 20%)。
我该怎么做? Mysql 似乎只接受整数,而不是函数。
【问题讨论】:
假设我在 Select Query 中定义了一个别名“count”,并且我想将返回的数量限制为 count / 5(或表的 20%)。
我该怎么做? Mysql 似乎只接受整数,而不是函数。
【问题讨论】:
正确。 LIMIT 子句采用偏移量和行数,而不是百分比。您正在考虑支持 SELECT TOP 20 PERCENT ... 的 Microsoft SQL Server(请注意,标准 SQL 中未指定 LIMIT 或 TOP)。
我会在两个查询中这样做:
SELECT COUNT(*) FROM MyTable WHERE ...conditions...
SELECT * FROM MyTable WHERE ...conditions... ORDER BY ...order... LIMIT ?
将参数?替换为计数/5。
您不必在一个查询中解决所有问题。
【讨论】:
LIMIT 子句可以有 2 个参数,并且必须是整数常量。
你可以试试这样的
SET @skip=1; SET @numrows=(select count(*) div 5 from tbl );
PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?, ?';
EXECUTE STMT USING @skip, @numrows;
【讨论】: