Mysql
 sql >> Base de données >  >> RDS >> Mysql

J'ai besoin d'extraire des données en fonction de leur séquence exacte dans un tableau

L'idée est d'ordonner le résultat par leur position respective dans le tableau. Dans ce cas MySQL FIND_IN_SET fonction peut vous aider.

Vous pouvez ajouter l'ordre suivant :

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

Remarque : Vous devez convertir cette commande par instruction dans votre équivalent cake php mysql requête.

FIND_IN_SET

Exemple d'entrée :

requête :

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

Sortie :

requête :

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

Consultez la SQLFIDDLE DEMO ici

Modifier :

Je ne connais pas la CAKE PHP syntax dans la construction de la requête mysql.

Mais la requête équivalente dans cake php mysql peut être quelque chose comme ça :

$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'))
    ));