Usa LIMIT para paginar los resultados en la consulta de MySQL

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 de JDBC). Considere el siguiente fragmento de código

SELECT * FROM thread t ORDER BY t.id LIMIT ((? - 1) * 20), 20

Así que idealmente, esto resultaría, para la página 1, aLIMIT 0, 20.

Cuando pruebo

SELECT * FROM thread t ORDER BY t.id LIMIT ((1 - 1) * 20), 20

Me dicen que tengo un error de sintaxis. Sin embargo, no veo qué podría ser, solo son algunas matemáticas simples. Todo lo que me dice es

ERROR 1064 (42000): Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de '((1 - 1) * 20), 20' en la línea 1

¿Qué estoy haciendo mal con miLIMIT Cláusula, y ¿cómo puedo solucionarlo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta