sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

cómo seleccionar las 5 últimas filas de mi mysql

Debe ordenar los resultados y establecer un límite.

Suponiendo que datetime es lo que desea ordenar en:

$query = "
    SELECT 
        lat, 
        lng, 
        DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime 
    FROM markers1 WHERE 1
    ORDER BY datetime DESC
    LIMIT 5
";

EDITAR: Para responder al comentario de OP:"el resultado que obtengo es el inicio de la fila 50 para la primera consulta y sigue por 49,48,47,46 ¿Es posible que pueda obtener este inicio de la fila 46,47,48,49,50?"

Puede hacer esto con el resultado en PHP, obteniendo las filas y almacenándolas en una matriz e invirtiendo la matriz. No creo que pueda recorrer eficientemente un recurso de resultado mysql a la inversa.

Para hacer esto en la consulta SQL, debe crear una tabla temporal con la consulta original:

$query = "
    SELECT 
        lat,
        lng,
        DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime 
    FROM (
        SELECT 
            lat, 
            lng, 
            datetime
        FROM markers1 WHERE 1
        ORDER BY datetime DESC
        LIMIT 5
    ) AS tmp_markers
    ORDER BY datetime ASC
";

El resultado de la consulta inicial se utiliza como tabla para buscar en una nueva consulta, que ordena por fecha y hora ascendente. Tuve que aplicar DATE_FORMAT en la consulta externa porque necesitamos el campo de fecha y hora para ordenar nuevamente.