Чтобы получить сортировку в нужном вам порядке, используйте ваши условия в ORDER BY, но после них используйте DESC
.
SELECT *
FROM person
WHERE (condition1 OR condition2 OR condition3)
AND maintable.status = static
ORDER BY
condition1 DESC,
condition2 DESC,
condition3 DESC
Если это не сработает, потому что ваш запрос более сложный, вы можете использовать логическую логику, чтобы изменить ваш запрос (A OR B OR C) AND D
на (A AND D) OR (B AND D) OR (C AND D)
, тогда вы можете использовать следующий запрос:
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
AND static
здесь не обязателен, потому что все строки возвращают его, но в более сложном примере (где вы также возвращаете некоторые строки, которые не являются статичными), вам придется сделать это следующим образом.