sql >> Databasteknik >  >> RDS >> Mysql

Jag måste dra data baserat på dess exakta sekvens i en array

Tanken är att sortera resultatet efter deras respektive position i arrayen. I det här fallet MySQL FIND_IN_SET funktion kan hjälpa dig.

Du kan lägga till följande ordning efter uttalande:

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

Obs! Du måste konvertera denna ordning genom uttalande i din motsvarande cake php mysql fråga.

FIND_IN_SET

Exempel:

fråga:

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

Utdata:

fråga:

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

Kolla in SQLFIDDLE DEMO här

Redigera:

Jag kan inte CAKE PHP syntax i att bygga mysql-fråga.

Men motsvarande fråga i cake php mysql kan vara något sånt:

$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. SQLiteException:Okänd token vid läsning från databasen

  2. Hur infogar man en tidsstämpel i Oracle?

  3. MySQL:Hur kan jag få tidsstämpeln för den senaste infogningen i databasen

  4. Få åtkomst till mysql som körs på localhost från minikube