sql >> Databasteknik >  >> RDS >> Mysql

MySQL Välj rader vid första förekomsten av varje unikt värde

mysql har ett "fusk" för detta:

select *
from mytable
group by cid;

Det är allt du behöver, för i mysql låter det dig inte aggregera kolumnerna som inte är grupperade efter (andra databaser skulle skapa ett syntaxfel), i vilket fall det bara matar ut den första förekomsten av varje grupp-efter-värde. Observera dock att detta inte garanterar vägen där den "första" förekomsten bestäms (det blir bara hur raderna läses in)

Om du vill ha en särskild första förekomsten, sortera först, använd sedan grupp-för-fusket:

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. Hur du säkerställer att databaser säkerhetskopieras regelbundet

  2. CEILING() Exempel i SQL Server

  3. Konvertera 'tid' till 'datetime2' i SQL Server (T-SQL-exempel)

  4. Förstå kontrollbegränsningar i PostgreSQL