MySQL: Quando usar a função FIELD() para ordenar resultados

Em algumas situações precisamos que o MySQL retorne registros exatamente na mesma ordem em que fornecemos os valores em uma lista. Nesses casos, a função FIELD() pode ser extremamente útil.

O Problema

Imagine que você precise buscar usuários específicos no banco, mas deseja que o resultado seja exibido exatamente na ordem informada na consulta.

Se utilizarmos apenas um ORDER BY tradicional, o MySQL irá ordenar por ordem numérica ou alfabética, e não pela sequência desejada.

Exemplo de consulta:

SELECT 
    username,
    CONCAT(firstname, ' ', lastname) AS nome_completo,
    idnumber
FROM USER
WHERE username IN (10125008,10118396)
ORDER BY username;

O resultado será ordenado pelo valor do campo username, e não necessariamente na ordem desejada.

A Solução

Para resolver isso, podemos usar a função FIELD(). Ela permite definir explicitamente a ordem dos valores no ORDER BY.

Veja o exemplo:

SELECT 
    username,
    CONCAT(firstname, ' ', lastname) AS nome_completo,
    idnumber
FROM USER
WHERE username IN (10125008,10118396)
ORDER BY FIELD(username, 10125008,10118396);

Nesse caso, o MySQL irá ordenar o resultado exatamente na sequência definida dentro da função FIELD().

Como funciona o FIELD()

A função retorna a posição do valor dentro da lista informada.

Exemplo simplificado:

SELECT FIELD(10118396, 10125008,10118396);

Resultado:

2

Ou seja:

  • 10125008 → posição 1
  • 10118396 → posição 2

O ORDER BY utiliza esse número para organizar o resultado.

Quando usar FIELD()

Alguns cenários comuns:

  • Ordenar resultados conforme uma lista de IDs recebida via aplicação
  • Manter a ordem de resultados de uma busca externa
  • Ordenação personalizada sem precisar criar uma tabela auxiliar
  • Reproduzir exatamente a ordem de parâmetros enviados pelo usuário

Conclusão

A função FIELD() é uma solução simples e eficiente quando você precisa controlar manualmente a ordem dos resultados no MySQL.

Ela evita soluções mais complexas e mantém a consulta clara e objetiva, principalmente quando a ordenação precisa seguir exatamente a sequência definida pela aplicação.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima