Olá galera,
Estou fazendo um select para retornar quem pagou a maior multa usando a função max(). A questão é: eu posso ter mais de uma pessoa que pagou a maior multa. Exemplo: se o valor maximo pago é 500. e 20 pessoas pagaram esse valor, a minha consulta deveria retornar os 20 resultado. Todavia apenas o primeiro valor máximo da tabela encontrado e retornado ignorando os outros 19. Alguma dica para que me mostre todos esses valores máximos NÃO LIMITADO em 20? Não dá para limitar pois o banco a medida que cresce pode ocorrer de mais pessoas pagarem o o valor máximo.
Use subquery, exemplo:
SELECT * FROM table WHERE columns_valor = (SELECT MAX(columns_valor) FROM table) ;
1 curtida
Jonathan, usando esse método me retorna todos os registro e não apenas os maiores.
Não se se fui claro o suficiente mas a questão é que no momento tenho na tabela 2 valores iguais que são os maiores, dois registros com o valor 1000. usando o max() ou ele retorna apenas o primeiro valor maior ou retorna todos os valores do menor ao maior. Preciso que mostre os 2 registro e se no futuro tiverem mais valores iguais no topo dos valores que sejam mostrados na query.
A query do Jonathan retorna exatamente o que pretendes: todos os registos cujo valor é igual ao máximo valor da tabela, seja 1 ou sejam 50.