Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Muszę pobrać dane na podstawie ich dokładnej sekwencji w tablicy

Pomysł polega na uporządkowaniu wyniku według ich odpowiedniej pozycji w tablicy. W tym przypadku MySQL FIND_IN_SET funkcja może ci pomóc.

Możesz dodać następującą kolejność według oświadczenia:

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

Uwaga: Musisz przekonwertować to zamówienie za pomocą oświadczenia w swoim odpowiedniku cake php mysql zapytanie.

ZNAJDŹ_IN_SET

Przykładowe wprowadzanie:

zapytanie:

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

Wyjście:

zapytanie:

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

Sprawdź DEMO SQLFIDDLE tutaj

Edytuj:

Nie znam CAKE PHP syntax w budowaniu zapytania mysql.

Ale równoważne zapytanie w cake php mysql może być mniej więcej tak:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lista wszystkich procedur MySQL

  2. Wiele, ale wzajemnie wykluczających się kluczy obcych — czy to jest droga?

  3. MySQL:indeks złożony pełny tekst + btree?

  4. jak działa indeksowanie B-drzewa w mysql

  5. Mysql DISTINCT nie działa, jeśli dodam kolejną kolumnę