sql >> Databáze >  >> RDS >> Mysql

Potřebuji vytáhnout data na základě jejich přesné sekvence v poli

Cílem je seřadit výsledek podle jejich příslušné pozice v poli. V tomto případě MySQL FIND_IN_SET funkce vám může pomoci.

Následující objednávku můžete přidat prohlášením:

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

Poznámka: Tuto objednávku musíte převést příkazem ve vašem ekvivalentním cake php mysql dotaz.

FIND_IN_SET

Ukázkový vstup:

dotaz:

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

Výstup:

dotaz:

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

Podívejte se na DEMO SQLFIDDLE zde

Upravit:

Nevím CAKE PHP syntax při vytváření dotazu mysql.

Ale ekvivalentní dotaz v cake php mysql může to být něco takového:

$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. Jquery datepicker s Ajaxem nefunguje

  2. Spojte uzly XMLType v dotazu Oracle

  3. Proč nemohu použít proměnnou jako název tabulky v uložené proceduře?

  4. divné - výjimka mysql sql::SQLException není zachycena svým typem, ale je zachycena jako std::exception a úspěšně odevzdávána zpět