sql >> Base de Datos >  >> RDS >> Mysql

Necesito extraer datos en función de su secuencia exacta en una matriz

La idea es ordenar el resultado por su respectiva posición en el arreglo. En este caso MySQL FIND_IN_SET puede ayudarte.

Puede agregar el siguiente orden por declaración:

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

Nota: Necesita convertir este pedido por declaración en su equivalente cake php mysql consulta.

FIND_IN_SET

Entrada de muestra:

consulta:

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

Salida:

consulta:

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

Consulte la DEMOSTRACIÓN DE SQLFIDDLE aquí

Editar:

No sé CAKE PHP syntax en la construcción de la consulta mysql.

Pero la consulta equivalente en cake php mysql puede ser algo asi:

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