Quiero obtener mis resultados una 'página' a la vez; Quiero que el número de página sea un parámetro (en una declaración preparada por JDBC). Considere el siguiente fragmentoUse LIMIT para paginar los resultados en la consulta de MySQL
SELECT * FROM thread t ORDER BY t.id LIMIT ((? - 1) * 20), 20
Así que lo ideal, esto daría lugar, por la página 1, a LIMIT 0, 20
.
Cuando la prueba
SELECT * FROM thread t ORDER BY t.id LIMIT ((1 - 1) * 20), 20
Me han dicho que tengo un error de sintaxis. Aunque no veo lo que podría ser, es solo una matemática simple. Todo lo que me dice es
ERROR 1064 (42000): Tiene un error en la sintaxis SQL; consulte el manual que corresponde a su versión del servidor MySQL para el sintaxis derecho al uso cerca '((1 - 1) * 20), 20' en la línea 1
¿qué estoy haciendo mal con mi cláusula de LIMIT
¿y cómo puedo solucionarlo?
por lo que no puede evaluar '((1-1) * 20)' como una constante, a pesar de que consiste en nada más constantes ? Eso parece una limitación extraña. Pensé que se consideraba una constante, ya que no contenía ninguna variable ... ¡pero al menos sé qué hacer ahora! Gracias. – corsiKa
Sí, matemáticamente hablando, estás representando una "constante" ((1-1) * 20 es siempre la misma) ... pero desde la perspectiva del analizador, MySQL no está en un estado de análisis de expresión matemática :) – Matt
Acabo de reemplazar el código ofensivo con 'limit?, 20' y usando' pageStart = (page - 1) * 20; 'y funcionó como un amuleto. Ahora en el siguiente error :) – corsiKa