9

假设我在 Select Query 中定义了一个别名“count”,并且我想将返回的数量限制为 count / 5(或表的 20%)。

我怎样才能做到这一点?Mysql 似乎只接受整数,而不是函数。

4

2 回答 2

12

正确的。该LIMIT子句采用偏移量和行数,而不是百分比。您正在考虑 Microsoft SQL Server,它支持SELECT TOP 20 PERCENT ...(请注意,标准 SQL 中均未指定LIMIT或未TOP指定)。

我会在两个查询中做到这一点:

SELECT COUNT(*) FROM MyTable WHERE ...conditions...

SELECT * FROM MyTable WHERE ...conditions... ORDER BY ...order... LIMIT ?

将参数替换?为 count / 5。

您不必在单个查询中解决所有问题。

于 2009-08-20T22:38:14.543 回答
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;
于 2009-08-20T22:39:59.190 回答