Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tôi cần lấy dữ liệu dựa trên trình tự chính xác của nó trong một mảng

Ý tưởng là sắp xếp kết quả theo vị trí tương ứng của chúng trong mảng. Trong trường hợp này, MySQL FIND_IN_SET chức năng có thể giúp bạn.

Bạn có thể thêm thứ tự sau theo câu lệnh:

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

Lưu ý: Bạn cần chuyển đổi đơn đặt hàng này bằng câu lệnh trong cake php mysql tương đương của bạn truy vấn.

FIND_IN_SET

Đầu vào mẫu:

truy vấn:

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

Đầu ra:

truy vấn:

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

Kiểm tra SQLFIDDLE DEMO tại đây

Chỉnh sửa:

Tôi không biết CAKE PHP syntax trong việc xây dựng truy vấn mysql.

Nhưng truy vấn tương đương trong cake php mysql có thể là một cái gì đó như thế:

$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. Phân phối lại phiếu bầu trong khi loại bỏ các ứng cử viên

  2. Danh sách SELECT không nằm trong mệnh đề GROUP BY và chứa cột không được tổng hợp .... không tương thích với sql_mode =only_full_group_by

  3. Cách sao lưu / khôi phục MySQL / MariaDB và PostgreSQL bằng công cụ ‘Automysqlbackup’ và ‘Autopostgresqlbackup’

  4. Câu lệnh chèn MySql vào kiểu dữ liệu nhị phân?

  5. Chọn các hàng và cột cụ thể từ cơ sở dữ liệu SQL