Tôi tự hỏi liệu có cách nào (có thể là một cách tốt hơn) để sắp xếp theo thứ tự của các giá trị trong mệnh đề IN ().
Vấn đề là tôi có 2 truy vấn, một truy vấn lấy tất cả ID và lần thứ hai lấy tất cả thông tin. Cái đầu tiên tạo thứ tự của ID mà tôi muốn thứ hai đặt hàng theo. Các ID được đặt trong mệnh đề IN () theo đúng thứ tự.
Vì vậy, nó sẽ là một cái gì đó như (cực kỳ đơn giản):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
Vấn đề là truy vấn thứ hai không trả về kết quả theo cùng thứ tự mà ID được đặt vào mệnh đề IN ().
Một giải pháp tôi đã tìm thấy là đặt tất cả các ID vào bảng tạm thời với trường tăng tự động sau đó được nối vào truy vấn thứ hai.
Có một lựa chọn tốt hơn?
Lưu ý: Vì truy vấn đầu tiên được chạy "bởi người dùng" và truy vấn thứ hai được chạy trong quy trình nền, không có cách nào để kết hợp truy vấn 2 thành 1 bằng các truy vấn phụ.
Tôi đang sử dụng MySQL, nhưng tôi nghĩ nó có thể hữu ích khi nó lưu ý những tùy chọn nào có cho các DB khác.
IN
vàFIELD
các tham số là như nhau. Làm điều này trong một mã chương trình có thể nhanh hơn bằng cách sử dụng kiến thức bổ sung đó. Tất nhiên, có thể khôn ngoan hơn khi đặt gánh nặng này lên máy khách hơn là máy chủ nếu bạn có ý định thực hiện máy chủ.