enter image description here

Quiero consultar la imagen de arriba.

La imagen de la izquierda son datos originales, la imagen de la derecha son datos de consulta.

select distinct ID, Nickname, Revision 
from test_table

Esta consulta no muestra la imagen de arriba.

¿Cómo evitar datos duplicados?

7
somputer 28 dic. 2016 a las 08:10

3 respuestas

La mejor respuesta

Si es SQL Server, usando la función de ventana ROW_NUMBER en la subconsulta:

select t.id, t.nickname, t.revision
from (
    select t.*, row_number() over (
            partition by t.id order by t.revision desc
            ) rn
    from your_table t
    ) t
where rn = 1;

O usando TOP with ties con ROW_NUMBER:

select top 1 with ties *
from your_table
order by row_number() over (
        partition by id order by revision desc
        )

Si MySQL:

select t.*
from your_table t
inner join (
    select id, MAX(revision) revision
    from your_table
    group by id
    ) t1 on t.id = t1.id
    and t.revision = t1.revision;
15
Gurwinder Singh 22 mar. 2017 a las 17:08

Otro truco usando TOP 1 with TIES

SELECT Top 1 with ties *
    FROM your_table t
Order by row_number() over (partition BY t.id order by t.revision DESC) 
5
Pரதீப் 28 dic. 2016 a las 05:37
select distinct ID, Nickname, MAX(Revision) 
from test_table 
group by ID
1
Pரதீப் 28 dic. 2016 a las 06:07