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