sql >> Databáze >  >> RDS >> Mysql

Jak zajistit pořadí výsledků dotazu MYSQL ORDER BY podmínek?

Chcete-li dosáhnout řazení v požadovaném pořadí, použijte podmínky v ORDER BY, ale použijte DESC po nich.

SELECT *
FROM person
WHERE (condition1 OR condition2 OR condition3)
AND maintable.status = static
ORDER BY
    condition1 DESC,
    condition2 DESC,
    condition3 DESC

Pokud to nefunguje, protože váš dotaz je složitější, můžete ke změně dotazu použít booleovskou logiku (A OR B OR C) AND D do (A AND D) OR (B AND D) OR (C AND D) pak můžete použít následující dotaz:

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 zde není nutné, protože to vracejí všechny řádky, ale ve složitějším příkladu (kde vracíte i některé řádky, které nejsou statické) byste to museli udělat tímto způsobem.



  1. Replikace Londiste s PostgreSQL 9.0

  2. Může na jedné tabulce existovat více primárních klíčů?

  3. rozdíl mezi klauzulí ON a použitím klauzule v sql

  4. Zkontrolujte, zda je IP v podsíti