Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Select rows na primeira ocorrência de cada valor exclusivo


mysql tem um "cheat" para isso:
select *
from mytable
group by cid;

Isso é tudo que você precisa, porque no mysql ele permite que você não agrega as colunas não agrupadas por (outros bancos de dados lançariam um erro de sintaxe), nesse caso ele gera apenas a primeira ocorrência de cada valor(es) agrupar por. Observe que isso não garante a forma em que a "primeira" ocorrência é determinada (será apenas como as linhas são lidas)

Se você quer um particular primeira ocorrência, classifique primeiro e aplique o truque group-by:
select *
from (
    -- order by the "time" column descending to get the "most recent" row
    select * from mytable order by time desc
    ) x
group by cid