Ok, eu tenho uma tabela com uma chave indexada e um campo não indexado. Preciso encontrar todos os registros com um determinado valor e retornar a linha. Gostaria de saber se posso pedir por vários valores.
Exemplo:
id x_field
-- -----
123 a
124 a
125 a
126 b
127 f
128 b
129 a
130 x
131 x
132 b
133 p
134 p
135 i
pseudo: gostaria que os resultados fossem ordenados assim, where ORDER BY x_field = 'f', 'p', 'i', 'a'
SELECT *
FROM table
WHERE id NOT IN (126)
ORDER BY x_field 'f', 'p', 'i', 'a'
Portanto, os resultados seriam:
id x_field
-- -----
127 f
133 p
134 p
135 i
123 a
124 a
125 a
129 a
A sintaxe é válida, mas quando executo a consulta, ela nunca retorna nenhum resultado, mesmo se eu limitar a 1 registro. Existe outra maneira de fazer isso?
Pense no x_field como resultados de teste e eu preciso validar todos os registros que se enquadram na condição. Eu queria ordenar os resultados do teste por valores com falha, valores aprovados. Portanto, eu poderia validar os valores com falha primeiro e, em seguida, os valores passados usando o ORDER BY.
O que não posso fazer:
- GROUP BY, pois preciso retornar os valores de registro específicos
- ONDE x_field IN ('f', 'p', 'i', 'a'), preciso de todos os valores, pois estou tentando usar uma consulta para vários testes de validação. E os valores x_field não estão na ordem DESC / ASC
Depois de escrever essa pergunta estou começando a pensar que preciso repensar isso, LOL!