För att få sorteringen i den ordning du vill, använd dina villkor i ORDER BY, men använd DESC
efter dem.
SELECT *
FROM person
WHERE (condition1 OR condition2 OR condition3)
AND maintable.status = static
ORDER BY
condition1 DESC,
condition2 DESC,
condition3 DESC
Om detta inte fungerar eftersom din fråga är mer komplex kan du använda boolesk logik för att ändra din fråga (A OR B OR C) AND D
till (A AND D) OR (B AND D) OR (C AND D)
sedan kan du använda följande fråga:
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
är inte nödvändigt här eftersom alla rader returnerar det, men i ett mer komplext exempel (där du även returnerar några rader som inte är statiska) så skulle du behöva göra det på detta sätt.