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

Sådan grupperes efter DESC-rækkefølge

Hvis du vil have det sidste id for hver asker , så skal du bruge en aggregeret funktion:

SELECT max(id) as id, 
   asker
FROM questions 
GROUP by asker 
ORDER by id DESC

Grunden til, at du fik det usædvanlige resultat, er fordi MySQL bruger en udvidelse til GROUP BY som tillader elementer i en udvalgt liste at være ikke-aggregeret og ikke inkluderet i GROUP BY-sætningen. Dette kan dog føre til uventede resultater, fordi MySQL kan vælge de værdier, der returneres. (Se MySQL-udvidelser til GROUP BY )

Fra MySQL Docs:

Hvis du nu havde andre kolonner, som du skal returnere fra tabellen, men ikke ønsker at tilføje dem til GROUP BY på grund af de inkonsekvente resultater, du kunne få, kan du bruge en underforespørgsel til at gøre det. (Demo )

select 
  q.Id,
  q.asker,
  q.other -- add other columns here
from questions q
inner join
(
  -- get your values from the group by
  SELECT max(id) as id, 
    asker
  FROM questions 
  GROUP by asker 
) m
  on q.id = m.id
order by q.id desc


  1. SQL Server:det maksimale antal rækker i tabellen

  2. Gruppering i interval på 5 minutter inden for et tidsinterval

  3. Hvad er den hurtigste måde at masseindsætte en masse data i SQL Server (C#-klient)

  4. LOWER() – Konverter til små bogstaver i PostgreSQL