sql >> Base de Datos >  >> RDS >> Mysql

Cómo agrupar por orden DESC

Si quieres el último id para cada asker , entonces debería usar una función agregada:

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

La razón por la que obtuvo el resultado inusual es porque MySQL usa una extensión para GROUP BY que permite que los elementos de una lista de selección no se agreguen ni se incluyan en la cláusula GROUP BY. Sin embargo, esto puede generar resultados inesperados porque MySQL puede elegir los valores que se devuelven. (Ver Extensiones MySQL para GROUP BY )

De los documentos de MySQL:

Ahora, si tiene otras columnas que necesita devolver de la tabla, pero no desea agregarlas a GROUP BY debido a los resultados inconsistentes que podría obtener, entonces podría usar una subconsulta para hacerlo. (Demostración )

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