假设我在Select Query中定义别名'count',我想将返回的数量限制为count / 5(或表的20%)。
我该怎么做?除了整数,Mysql似乎没有任何东西,而不是函数。
答案 0 :(得分:11)
正确。 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 ?
将参数?
替换为count / 5.
您不必在单个查询中解决所有问题。
答案 1 :(得分: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;
答案 2 :(得分:0)
查看MySQL存储的例程(程序/函数)
http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html