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

Jeg har brug for at trække data baseret på dens nøjagtige rækkefølge i et array

Ideen er at sortere resultatet efter deres respektive placering i arrayet. I dette tilfælde MySQL FIND_IN_SET funktion kan hjælpe dig.

Du kan tilføje følgende rækkefølge efter erklæring:

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

Bemærk: Du skal konvertere denne ordre efter sætning i din tilsvarende cake php mysql forespørgsel.

FIND_IN_SET

Eksempelinput:

forespørgsel:

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

Output:

forespørgsel:

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

Tjek SQLFIDDLE DEMO her

Rediger:

Jeg kender ikke CAKE PHP syntax i at bygge mysql-forespørgsel.

Men den tilsvarende forespørgsel i cake php mysql kan være sådan noget:

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



  1. Hvilken SQL-forespørgsel er hurtigere? Filtrer på Tilmeldingskriterier eller Hvor-klausul?

  2. MySQL sletter ikke poster

  3. Mysql tæller forekomst efter gruppe

  4. Sådan eksporteres resultaterne af en forespørgsel ved hjælp af MySQL Workbench