sql >> Database teknologi >  >> RDS >> Mysql

Sortering efter rækkefølgen af ​​værdier i en SQL IN()-sætning

Brug MySQL's FIELD() funktion:

SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])

FIELD() returnerer indekset for den første parameter, der er lig med den første parameter (bortset fra selve den første parameter).

FIELD('a', 'a', 'b', 'c')

vil returnere 1

FIELD('a', 'c', 'b', 'a')

vil returnere 3

Dette vil gøre præcis, hvad du vil, hvis du indsætter id'erne i IN() klausulen og FIELD() funktion i samme rækkefølge.



  1. En tur gennem GIMR

  2. Oracle Analytic-funktioner - nulstilling af en vinduesklausul

  3. Kan PostgreSQL indeksere array-kolonner?

  4. Sådan afkortes tekst med en Ellipsis i MariaDB