sql >> Database >  >> RDS >> Mysql

Ik moet gegevens ophalen op basis van de exacte volgorde in een array

Het idee is om het resultaat te ordenen op hun respectieve positie in de array. In dit geval MySQL FIND_IN_SET functie kan u helpen.

U kunt de volgende volgorde per verklaring toevoegen:

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

Opmerking: U moet deze volgorde per instructie omzetten in uw equivalente cake php mysql vraag.

FIND_IN_SET

Voorbeeldinvoer:

vraag:

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

Uitvoer:

vraag:

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

Bekijk de SQLFIDDLE DEMO hier

Bewerken:

Ik ken de CAKE PHP syntax niet bij het bouwen van een mysql-query.

Maar de equivalente zoekopdracht in cake php mysql zou zoiets kunnen zijn:

$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. Postgres-vensterfunctie en groeperen op uitzondering

  2. Hoe kan ik geselecteerde rijen bijwerken met waarden uit een CSV-bestand in Postgres?

  3. Hoe de dropdown-waarden uit de database op te halen en weer te geven in jsp

  4. Maximum aantal tekens in labels (tabelnamen, kolommen enz.)