Obtener ultimo registro en select filtrando por id y ultima fecha de ingreso MySQL

publicado por: Anonymous

Estoy tratando de hacer un query el cual me trae el ultimo registro dentro de una tabla donde dichos registros suelen o van a estar repetidos.

Esta sería mi tabla

introducir la descripción de la imagen aquí

Entonces lo que busco lograr es hacer un query donde filtre por fecha y id_producto

solución

Te dejo dos posibilidades de consulta.

Según los índices que tengas establecidos en tu tabla, puedes elegir una u otra.

Puedes probar lo que ocurre colocando EXPLAIN antes de cada cláusula SELECT.

VER DEMO

Opción 1

SELECT  
    producto_id, MAX(fecha) AS fecha
FROM 
    producto_20170927
WHERE 
    producto_id = 8
;

Opción 2

SELECT  
    a.producto_id, a.fecha
FROM    
    producto_20170927 a
        INNER JOIN
        (
            SELECT  producto_id, MAX(fecha) fecha_max
            FROM    producto_20170927
            GROUP BY producto_id
        ) b ON a.producto_id = b.producto_id AND
                a.fecha = b.fecha_max
 WHERE 
     a.producto_id=8
 ;

Resultado

En ambos casos el resultado es el mismo:

producto_id      fecha
8                15.09.2017 21:00:00

Sobre el uso de EXPLAIN para evaluar el funcionamiento de las consultas:

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *