2012-03-29 32 views
5

Hiện tại, tôi đang lấy một số dữ liệu từ bảng cơ sở dữ liệu MySQL, nhưng vấn đề là mỗi khi truy vấn được thực hiện, theo mặc định, MySQL sắp xếp kết quả theo tự động tạo id là tên trường [id]. Tôi không muốn được sắp xếp. Trong trường hợp của tôi:Tôi không muốn MySQL sắp xếp kết quả tìm thấy

$keys = array(4, 1, 7, 8, 2, 5, 6); 
$strKeys = implode(',', $keys); 
$result = mysql_query('SELECT * FROM tableName WHERE id in('.$strKeys.')'); 

Tôi muốn kết quả theo thứ tự từ những gì các phím $ trông giống như: 4, 1, 7, 8, 2, 5, 6 NHƯNG thực sự, kết quả đi ra trong trật tự sắp xếp bởi [id]: 1, 2, 4, 5, 6, 7, 8

Cách nhận kết quả và hiển thị theo thứ tự từ các phím $.

+0

Điều dễ nhất cần làm là chỉ tập trung mảng hoặc (có lẽ tốt nhất) lập chỉ mục theo id và sau đó sử dụng phím $ để lặp qua nó. – Corbin

+1

có thể trùng lặp của [Làm thế nào để bạn giữ trật tự bằng cách sử dụng SELECT WHERE IN()?] (Http://stackoverflow.com/questions/2813884/how-do-you-keep-the-order-using-select-where- in) –

+0

Wow! Không bao giờ biết rằng chức năng tồn tại. >. < – Corbin

Trả lời

9

Bạn có thể thử điều này.

SELECT * FROM tableName WHERE id in (4, 1, 7, 8, 2, 5, 6) order by find_in_set(id, '4, 1, 7, 8, 2, 5, 6'); 
+0

Vâng, nó hoạt động! Khá nhiều cảm ơn. Tôi chưa bao giờ biết điều này trước đây. – Thavarith

Các vấn đề liên quan