Para obter a ordenação na ordem desejada, use suas condições no ORDER BY, mas use
DESC
depois deles. SELECT *
FROM person
WHERE (condition1 OR condition2 OR condition3)
AND maintable.status = static
ORDER BY
condition1 DESC,
condition2 DESC,
condition3 DESC
Se isso não funcionar porque sua consulta é mais complexa, você pode usar a lógica booleana para alterar sua consulta
(A OR B OR C) AND D
em (A AND D) OR (B AND D) OR (C AND D)
então você pode usar a seguinte consulta:SELECT *
FROM person
WHERE (condition1 OR condition2 OR condition3)
AND maintable.status = static
ORDER BY
condition1 AND static DESC,
condition2 AND static DESC,
condition3 AND static DESC
O
AND static
não é necessário aqui porque todas as linhas o retornam, mas em um exemplo mais complexo (onde você também retorna algumas linhas que não são estáticas), você teria que fazer dessa maneira.