sql >> Databasteknik >  >> RDS >> Mysql

Att returnera frågeresultat i fördefinierad ordning

Jag trodde inte att detta var möjligt, men hittade ett blogginlägg här som verkar göra den typ av sak du är ute efter:

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

ger olika resultat till

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 returnerar positionen för id i det andra argumentet som ges till det, så för det första fallet ovan, id av 7 är på position 1 i setet, 2 vid 2 och så vidare - mysql fungerar internt ungefär som

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

sorteras sedan efter resultaten av FIND_IN_SET .



  1. Django distinkt grupp efter fråga på två fält

  2. Konfigurera en lyssnare i Oracle Database (12c, 18c och 19c utgåvor)

  3. Hur du skyddar dina PostgreSQL-databaser från cyberattacker med SQL-brandvägg

  4. Är det säkert att lagra datum som en sträng i mysql?