Mostrar ultimo registro de cada grupo sql
Vamos a ver como mostrar el ultimo registro de cada grupo de una consulta sql es decir usaremos un GROUP BY para no repetir registros y ademas mostraremos el último registro de ese grupo.
Ejemplo de un GROUP BY normal:
Ejemplo de un GROUP BY normal:
1 A A_data_1 2 A A_data_2 3 A A_data_3 4 B B_data_1 5 B B_data_2 6 C C_data_1Como vemos estamos ordenando de manera eficiente pero repetimos los registros A y B, ahora vemos como solucionar esto:
//Con esta consulta obtenemos el último articulo de cada autor sin repetir el autor en la consulta $query_SacarPost = "SELECT * FROM articulos WHERE id IN (SELECT MAX(id) FROM articulos GROUP BY autor) ORDER BY id DESC";Ahora obtenemos:
3 A A_data_3 5 B B_data_2 6 C C_data_1Para cualquier duda deja tu comentario..
5
Puntos
Puntos
37611
Visitas
Visitas
1
Resp
Resp
Por alber hace 108 meses
Administrador
Respuesta #1
Para los casos en los que no quiere devolver el último registro basado en su MAX(id), se puede utilizar esta consulta.
SELECT * FROM
( SELECT * ROW_NUMBER() OVER(PARTITION BY t1.autor ORDER BY t1.id desc) contador
FROM articulos t1
) q1
WHERE q1.contador = 1
Basándose en el Order By podemos devolver cualquier registro que nos interese del grupo.
SELECT * FROM
( SELECT * ROW_NUMBER() OVER(PARTITION BY t1.autor ORDER BY t1.id desc) contador
FROM articulos t1
) q1
WHERE q1.contador = 1
Basándose en el Order By podemos devolver cualquier registro que nos interese del grupo.
0
Puntos
Puntos
Por Jcastro hace 50 meses
Principiante