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

Nejprve seřaďte podle konkrétní hodnoty pole

K dispozici je také MySQL FIELD funkce .

Pokud chcete úplné řazení pro všechny možné hodnoty:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")

Pokud vás zajímá pouze to, že „core“ je první a na ostatních hodnotách nezáleží:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC

Pokud chcete nejprve seřadit podle "jádra" a podle ostatních polí v normálním pořadí:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority

Je zde však několik upozornění:

Za prvé, jsem si docela jistý, že se jedná pouze o funkci mysql – otázka je označena jako mysql, ale člověk nikdy neví.

Za druhé, věnujte pozornost tomu, jak FIELD() funguje:vrací index založený na jednom hodnoty - v případě FIELD(priority, "core") , vrátí 1, pokud je hodnota "core". Pokud hodnota pole není v seznamu, vrátí nulu . To je důvod, proč DESC je nutné, pokud nezadáte všechny možné hodnoty.



  1. Jak používat klauzuli hromadného sběru s příkazem SELECT INTO v databázi Oracle

  2. Přidejte sloupec do existující tabulky v SQLite

  3. ClusterControl - Pokročilá správa zálohování - PostgreSQL

  4. C# - Jak získat hodnotu typu oracle long raw