Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Eu preciso puxar dados com base em sua sequência exata em uma matriz


A ideia é ordenar o resultado por sua respectiva posição na matriz. Neste caso MySQL FIND_IN_SET função pode ajudá-lo.

Você pode adicionar a seguinte ordem por declaração:
ORDER BY FIND_IN_SET(car.id,'3,10,7')

Observação: Você precisa converter esta ordem por instrução em seu equivalente cake php mysql inquerir.

FIND_IN_SET

Amostra de entrada:

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

Saída:

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

Verifique a SQLFIDDLE DEMO aqui

Editar:

Eu não sei CAKE PHP syntax na construção de consulta mysql.

Mas a consulta equivalente em cake php mysql pode ser algo assim:
$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'))
    ));