2011-06-22 13 views
5

Estoy usando la siguiente consulta para recuperar los últimos 10 resultados de mi base de datos, pero los necesito para que no estén en orden descendente. ¿Hay alguna manera de que pueda lograr esto con la consulta o tengo que manejarlo en php? Gracias por tu ayuda.Resultado de la consulta al invertir

SELECT * FROM MSG ORDER BY id DESC LIMIT 0,10 

Respuesta

4

Por favor, intente lo siguiente para resolver su problema

SELECT * FROM (SELECT * FROM MSG ORDER BY id DESC LIMIT 10) AS RequiredLimit ORDER BY id ASC 
4

SELECT * FROM (SELECT * FROM MSG ID ORDER BY DESC LIMIT 0,10) ORDER BY id - debería funcionar

3

Además de las respuestas de mysql que ya existen, una solución de php sería usar array_reverse() en el conjunto de resultados original.

1

Si bien utilizar una consulta anidada es una respuesta, creo que es más óptimo ejecutar dos consultas que una anidada o una subconsulta. Disminuye la sobrecarga - corrígeme si estoy equivocado.

me gustaría sugerir:

$row_offset = get_result("SELECT COUNT(*) FROM MSG;") - 10; 

$rows = get_result("SELECT * FROM MSG LIMIT " . $row_offset . ", 10;"); 

Suponiendo (por supuesto!) Que get_results() es una función personalizada de ejecutar la consulta y devolver los datos de la tabla.

Cuestiones relacionadas