sql >> Databasteknik >  >> RDS >> Mysql

Hur gör man MYSQL-förfrågeresultat ORDER BY villkor ordning?

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.



  1. Något sätt att välja utan att orsaka låsning i MySQL?

  2. SQLite Join

  3. Databastabeller, fler desto bättre?

  4. Kroniska inaktuella resultat med MySQLdb i Python