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

SQL:Como manter a ordem das linhas com DISTINCT?


o distinct palavra-chave está fazendo o que deveria fazer, retornar uma linha cada uma com um determinado valor de coluna. Distinct não permite que você especifique qual essa linha será retornada e fica claro na consulta original que essa ordenação é permitida (há uma linha com id 443 que segue uma linha com id 429).

Para assumir o controle de quais linhas serão retornadas, você precisa reformular a consulta. Uma solução típica que vou usar é usar um group by , selecionando a coluna do grupo e a linha desejada de cada grupo, algo no sentido de
SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;

Se eu precisar fazer mais, usarei esse tipo de consulta como uma subseleção em uma consulta maior, possivelmente juntando-se ao campo id para obter mais campos da linha preferida ou ordenando a consulta de uma maneira específica.