Ответ 1
Чтобы получить сортировку в нужном порядке, используйте свои условия в 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
здесь не требуется, потому что все строки возвращают его, но в более сложном примере (где вы также возвращаете некоторые строки, которые не являются статическими), тогда вам придется делать это таким образом.