Digamos que defino un 'recuento' de alias en mi consulta selectiva y quiero limitar la cantidad devuelta a count/5 (o 20% de la tabla).Mysql - LIMIT por porcentaje?
¿Cómo puedo hacer esto? Mysql no parece tomar nada más que enteros, no funciones.
Digamos que defino un 'recuento' de alias en mi consulta selectiva y quiero limitar la cantidad devuelta a count/5 (o 20% de la tabla).Mysql - LIMIT por porcentaje?
¿Cómo puedo hacer esto? Mysql no parece tomar nada más que enteros, no funciones.
Correcto. La cláusula LIMIT
toma un desplazamiento y un recuento de filas, no un porcentaje. Está pensando en Microsoft SQL Server, que admite SELECT TOP 20 PERCENT ...
(tenga en cuenta que ni LIMIT
ni TOP
se especifican en SQL estándar).
Me gustaría hacer esto en dos consultas:
SELECT COUNT(*) FROM MyTable WHERE ...conditions...
SELECT * FROM MyTable WHERE ...conditions... ORDER BY ...order... LIMIT ?
reemplace el parámetro ?
con el recuento/5.
Usted no tiene que resolver todos los problemas en una sola consulta.
la cláusula LIMIT puede tomar 2 argumentos y debe ser constantes de enteros.
puede intentar algo como esto
SET @skip=1; SET @numrows=(select count(*) div 5 from tbl);
PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?, ?';
EXECUTE STMT USING @skip, @numrows;
mirada en las rutinas de MySQL almacenados (procedimientos/funciones)
http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html
Sólo para añadir, creo que la ejecución de estas dos consultas * no * causar significativa sobrecarga, ya que MySQL debe almacenar en caché el resultado de la primera consulta y el segundo realmente se ejecutará mucho más rápido. – DisgruntledGoat