Seleccionar las últimas N filas de MySQL


Quiero seleccionar las últimas 50 filas de la base de datos MySQL dentro de la columna llamada id que es clave primaria. El objetivo es que las filas se ordenen por id en el orden ASC , por eso esta consulta no funciona

SELECT 
    *
FROM
    `table`
ORDER BY id DESC
LIMIT 50;

También es notable que las filas podrían ser manipuladas (eliminadas) y es por eso que la siguiente consulta no funciona tampoco

SELECT 
    *
FROM
    `table`
WHERE
    id > ((SELECT 
            MAX(id)
        FROM
            chat) - 50)
ORDER BY id ASC;

Pregunta: ¿Cómo es posible recuperar las últimas N filas de la base de datos MySQL que se pueden manipular y estar en orden ASC ?

Author: kame, 2012-08-26

3 answers

Puedes hacerlo con una sub-consulta:

SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 50
) sub
ORDER BY id ASC

Esto seleccionará las últimas 50 filas de table, y luego ordenarlas en orden ascendente.

 169
Author: newfurniturey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-25 21:49:04
SELECT * FROM table ORDER BY id DESC,datechat desc LIMIT 50

Si tiene un campo de fecha que almacena la fecha(y la hora) en la que se envió el chat o cualquier campo que se rellene con datos incrementales(order by DESC) o desinscrementales( order by ASC) por fila, póngalo como segunda columna en la que los datos deben estar ordenados.

¡Eso es lo que funcionó para mí!!!! ¡espero que ayude!!!!

 5
Author: aidonsnous,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-26 12:11:31
SELECT * FROM table ORDER BY id DESC LIMIT 50

Guardar recursos haga una consulta, no hay necesidad de hacer consultas anidadas

 3
Author: Buzz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-06 21:40:43