Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ich muss Daten basierend auf ihrer genauen Reihenfolge in einem Array abrufen

Die Idee ist, das Ergebnis nach ihrer jeweiligen Position im Array zu ordnen. In diesem Fall MySQL FIND_IN_SET Funktion kann Ihnen helfen.

Sie können die folgende order by-Anweisung hinzufügen:

ORDER BY FIND_IN_SET(car.id,'3,10,7')

Hinweis: Sie müssen diese Order-by-Anweisung in Ihrem entsprechenden cake php mysql konvertieren Anfrage.

FIND_IN_SET

Beispieleingabe:

Abfrage:

SELECT *
FROM cars
id
2
3
4
5
6
7
8
9
10
11

Ausgabe:

Abfrage:

SELECT *
FROM cars
WHERE cars.id IN (3,10,7)
ORDER BY FIND_IN_SET(cars.id,'3,10,7')
id
3
10
7

Sehen Sie sich die SQLFIDDLE-DEMO hier an

Bearbeiten:

Ich kenne die CAKE PHP syntax nicht beim Erstellen einer MySQL-Abfrage.

Aber die entsprechende Abfrage in cake php mysql kann so etwas sein:

$cars = $this->car->find('all', array(
        'conditions' => array(
            'car.id' => array(3, 10, 7)
        ),
        'limit' => 3, 
        'order' => array(FIND_IN_SET('car.id' , '3,10,7'))
    ));