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

MySQL seřadit podle nějakého seznamu

Od 1 < 3 < 77 < 123 , jednoduchý ORDER BY id by stačilo.

Pokud však chcete objednávat tímto způsobem:77, 3, 123, 1 , pak můžete použít funkci FIELD() :

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1) 
ORDER BY FIELD(id, 77, 3, 123, 1)

Pokud váš dotaz odpovídá více řádkům, než kolik uvádíte v FIELD

FIELD vrátí 0 když řádek neodpovídá žádnému z vámi uvedených ID, tj. číslu menšímu než čísla vrácená pro uvedená ID. To znamená, že pokud váš dotaz odpovídá více řádkům než těm, které uvádíte, tyto řádky se zobrazí jako první. Například:

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 77, 3, 123, 1)

V tomto příkladu řádek s ID 400 se objeví jako první. Pokud chcete, aby se tyto řádky zobrazovaly jako poslední, jednoduše obraťte seznam ID a přidejte DESC :

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 1, 123, 3, 77) DESC



  1. Sloupec identity Oracle a vložte do select

  2. ORA-01438:hodnota větší než specifikovaná přesnost povolená pro tento sloupec při vkládání 3

  3. Připojení přestane fungovat po době nečinnosti

  4. MySQL Řazení podle čísla, prázdné řetězce (nebo 0) jako poslední