Sinds 1 <3 <77 <123
, een simpele ORDER BY id
zou volstaan.
Als u echter op deze manier wilt bestellen:77, 3, 123, 1
, dan zou je de functie VELD()
:
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1)
ORDER BY FIELD(id, 77, 3, 123, 1)
Als uw zoekopdracht overeenkomt met meer rijen dan u vermeldt in FIELD
VELD
retourneert 0
wanneer een rij niet overeenkomt met een van de id's die u opgeeft, d.w.z. een getal dat kleiner is dan de getallen die worden geretourneerd voor weergegeven id's. Dit betekent dat als uw zoekopdracht overeenkomt met meer rijen dan de rijen die u opgeeft, die rijen als eerste worden weergegeven. Bijvoorbeeld:
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1, 400)
ORDER BY FIELD(id, 77, 3, 123, 1)
In dit voorbeeld is de rij met ID 400
zal als eerste verschijnen. Als u wilt dat deze rijen als laatste verschijnen, draait u de lijst met ID's om en voegt u DESC
toe :
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1, 400)
ORDER BY FIELD(id, 1, 123, 3, 77) DESC