Estaba probando un código aparentemente incorrecto y estaba bastante seguro de que debería devolver un error de sintaxis. Pero no fue así. La siguiente consulta funciona sin errores (aunque tampoco ordena la tabla, lo que al menos cumple con mis expectativas ):
SELECT * FROM dummy ORDER BY 'id' 'desc';Curiosamente, eso
SELECT * FROM dummy ORDER BY id 'desc';produce un error de sintaxis.
¿Cómo interpreta MySQL dos cadenas después de ORDER BY ? ¿Para qué se necesitan estas cuerdas? Aquí está el MCVE
SELECT * FROM dummy ORDER BY 'id' 'desc';evalúa a
SELECT * FROM dummy ORDER BY 'iddesc';Es decir, ORDEN POR un literal de cadena (constante), que no afecta en absoluto al ORDEN POR.
Nota: Este es el estándar ANSI/ISO SQL, un carácter literal se puede construir en varias partes, sin tener una concatenación explícita.