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

Ho bisogno di estrarre i dati in base alla sua sequenza esatta in un array

L'idea è di ordinare il risultato in base alla rispettiva posizione nell'array. In questo caso MySQL FIND_IN_SET la funzione può aiutarti.

Puoi aggiungere il seguente ordine per estratto:

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

Nota: Devi convertire questo ordine per istruzione nel tuo equivalente cake php mysql interrogazione.

FIND_IN_SET

Input campione:

interrogazione:

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

Risultato:

interrogazione:

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

Controlla la SQLFIDDLE DEMO qui

Modifica:

Non so CAKE PHP syntax nella creazione di query MySQL.

Ma la query equivalente in cake php mysql potrebbe essere qualcosa del genere:

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