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

SQL:Hvordan holder man rækkefølgen med DISTINCT?

den distinct nøgleord er at gøre, hvad det skal gøre, returnere en række hver med en given kolonneværdi. Distinct tillader dig ikke at angive hvilken en sådan række vil blive returneret, og det fremgår tydeligt af den oprindelige forespørgsel, at en sådan bestilling er tilladt (der er en række med id 443, der følger efter en række med id 429).

For at tage kontrol over, hvilke rækker der returneres, skal du omformulere forespørgslen. En typisk løsning, jeg vil tage, er at bruge en group by , ved at vælge gruppekolonnen og den ønskede række fra hver gruppe, noget i retning af

SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;

Hvis jeg har brug for at gøre mere, vil jeg bruge denne form for forespørgsel som et undervalg i en større forespørgsel, muligvis slutte mig til id-feltet for at få flere felter fra den foretrukne række, eller bestille forespørgslen på en bestemt måde.




  1. 4 nøgledatabaseovervågningsaktiviteter, som enhver DBA bør kende

  2. DataTable med Ajax fungerer ikke godt efter brug serverSide:sand

  3. Hvordan åbner man DB-forbindelse i Openshift?

  4. Social webapplikationsdatabasedesign:hvordan kan jeg forbedre dette skema?