2012-03-24 10 views
5

Entonces, ¿qué sucede cuando usas un valor negativo en una cláusula LIMIT? ¿Habrá consecuencias negativas (juego de palabras leve)?¿Qué significa el uso de un valor negativo para MySQL LIMIT?

No veo ninguna documentación sobre esto, y los foros de MySQL, como recuerdo, sux.

Antecedentes: Estoy usando MySQL CE 5.5.20. Escribí un procedimiento almacenado que toma un parámetro int y lo usa para la cláusula LIMIT. Necesitaba una forma de devolver todas las filas si quería, así que traté de pasar -1 para el parámetro de límite en mi procedimiento/rutina de la tienda, y funcionó.

+0

¿Por qué no utilizar un entero muy grande en lugar de -1 si realmente quiere poner una cláusula de límite? –

Respuesta

0

Al usar esto en otras versiones de MySQL, puede generar un error.

The error in MySQL

3

Según la documentation, que debe ser un número entero no negativo

La cláusula LIMIT se puede utilizar para limitar el número de filas devueltas por la instrucción SELECT. LIMIT toma uno o dos argumentos numéricos, que deben ser constantes enteras no negativas (excepto cuando se usan declaraciones preparadas).

Me parece que lo que está experimentando es un error no documentado, en ese mysql debería arrojarse un error si los parámetros no están en línea con lo que la documentación requiere.

Mi sugerencia sería utilizar SQL corregido sintácticamente en su procedimiento almacenado. Aún así, puedes usar un int negativo como indicador para mostrar todo. Algo como esto

IF myparam >= 0 THEN 
    SELECT * FROM `mytable` LIMIT myparam; 
ELSE 
    SELECT * FROM `mytable`; 
END IF; 
Cuestiones relacionadas