Мені цікаво, чи немає вподобань (можливо, кращого способу) впорядкувати за порядком значень у пункті IN ().
Проблема полягає в тому, що у мене є 2 запити, один, який отримує всі ідентифікатори, а другий, який отримує всю інформацію. Перший створює порядок ідентифікаторів, за якими я хочу, щоб другий був упорядкований. Ідентифікатори ставлять у пункті IN () у правильному порядку.
Отже, це буде щось на зразок (надзвичайно спрощене):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
Проблема полягає в тому, що другий запит не повертає результати в тому ж порядку, що ідентифікатори, що вводяться в пункт IN ().
Я знайшов одне рішення - помістити всі ідентифікатори в темп-таблицю з полем автоматичного збільшення, яке потім приєднається до другого запиту.
Чи є кращий варіант?
Примітка. Оскільки перший запит виконується "користувачем", а другий виконується у фоновому процесі, немає можливості поєднати запит 2 в 1, використовуючи підзапити.
Я використовую MySQL, але я думаю, що може бути корисним, щоб він зазначив, які варіанти є і для інших БД.
IN
таFIELD
параметрів. Зробити це в програмному коді можливо швидше, використовуючи ці додаткові знання. Звичайно, було б розумніше покласти цей тягар на клієнта, а не на сервер, якщо ви маєте на увазі продуктивність сервера.