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

Returnering af forespørgselsresultater i foruddefineret rækkefølge

Jeg troede ikke, det var muligt, men fandt et blogindlæg her der ser ud til at gøre den type ting, du leder efter:

SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
 

vil give forskellige resultater til

SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"8,2,5,9,7");
 

FIND_IN_SET returnerer positionen for id i det andet argument givet til det, så for det første tilfælde ovenfor, id af 7 er på position 1 i sættet, 2 på 2 og så videre - mysql fungerer internt noget som

id | FIND_IN_SET ---|----------- 7 | 1 2 | 2 5 | 3

derefter sorteres efter resultaterne af FIND_IN_SET .



  1. Sådan installeres MySQL Workbench på Windows

  2. Hvad er nyt i MariaDB Server 10.5?

  3. Mysql MySQL eller PHP Transformer rækker til to kolonner dynamisk

  4. IF-syntaksfejl