sql >> Database teknologi >  >> RDS >> Mysql

MySQL Vælg rækker ved første forekomst af hver unik værdi

mysql har en "snyd" for dette:

select *
from mytable
group by cid;

Det er alt hvad du behøver, for i mysql giver det dig mulighed for at ikke aggregere de ikke-grupperede kolonner (andre databaser ville give en syntaksfejl), i hvilket tilfælde den kun udsender den første forekomst af hver gruppe-efter værdi(er). Bemærk dog, at dette ikke garanterer måden hvor den "første" forekomst bestemmes (det vil kun være, hvordan rækkerne læses ind)

Hvis du ønsker en særlig første forekomst, sorter først, og anvend derefter gruppe-efter-snyden:

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. Lær hvordan du bruger SQL SELECT med eksempler

  2. Brent Ozar forklarer SQL Server intern og ekstern fragmentering

  3. Hvorfor returnerer valg af SCOPE_IDENTITY() en decimal i stedet for et heltal?

  4. Forskellen mellem LockModeType Jpa