Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como agrupar por ordem DESC


Se você quiser o último id para cada asker , então você deve usar uma função agregada:
SELECT max(id) as id, 
   asker
FROM questions 
GROUP by asker 
ORDER by id DESC

A razão pela qual você estava obtendo o resultado incomum é porque o MySQL usa uma extensão para GROUP BY que permite que os itens em uma lista de seleção não sejam agregados e não incluídos na cláusula GROUP BY. No entanto, isso pode levar a resultados inesperados porque o MySQL pode escolher os valores que são retornados. (Consulte Extensões MySQL para GROUP BY )

Dos documentos do MySQL:

Agora, se você tiver outras colunas que precisa retornar da tabela, mas não deseja adicioná-las ao GROUP BY devido aos resultados inconsistentes que você pode obter, então você pode usar uma subconsulta para fazer isso. (Demonstração )
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