sql >> Database >  >> RDS >> Mysql

Queryresultaten retourneren in een vooraf gedefinieerde volgorde

Ik dacht dat dit niet mogelijk was, maar vond een blogbericht hier dat lijkt te doen wat u zoekt:

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

geeft verschillende resultaten aan

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 geeft de positie van id . terug in het tweede argument dat eraan wordt gegeven, dus voor het eerste geval hierboven, id van 7 is op positie 1 in de set, 2 op 2 enzovoort - mysql werkt intern zoiets als

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

orden vervolgens op de resultaten van FIND_IN_SET .



  1. De instructie ALTER TABLE is in strijd met de beperking CHECK in SQL Server - SQL Server / TSQL-zelfstudie, deel 89

  2. MySQL:bestel op binnenkant van groep op

  3. Waarom werkt mijn databaseback-upscript niet in php?

  4. Dynamische tabel retourneren met onbekende kolommen van de PL/pgSQL-functie