sql >> Database >  >> RDS >> Mysql

MySQL sorteren op een lijst

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



  1. Is het veilig om strings te vergelijken met 'groter dan' en 'kleiner dan' in MySQL?

  2. `actieve' vlag of niet?

  3. Configuratie van MySQL 8

  4. Database - Een evenemententabel ontwerpen