sql >> Database >  >> RDS >> Mysql

MySQL Selecteer rijen bij het eerste optreden van elke unieke waarde

mysql heeft hiervoor een "cheat":

select *
from mytable
group by cid;

Dat is alles wat je nodig hebt, want in mysql kun je niet aggregeer de niet-gegroepeerd-op-kolommen (andere databases zouden een syntaxisfout veroorzaken), in welk geval het alleen het eerste exemplaar van elke groep-op-waarde(n) uitvoert. Houd er echter rekening mee dat dit niet de manier garandeert waarin het "eerste" voorkomen wordt bepaald (het is maar net hoe de rijen worden ingelezen)

Als je een bepaalde . wilt eerste keer, sorteer eerst, pas dan de group-by cheat toe:

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


  1. Fout bij het ophalen van tekst voor fout ORA-01804

  2. Concat-groepen in SQL Server

  3. JSON_MERGE_PATCH() - Voer een RFC 7396-compatibele samenvoeging van JSON-documenten uit in MySQL

  4. niet-ondersteund Scannen, stuurprogramma opslaan. Waarde type []uint8 in type *time.Time