Мне интересно, есть ли возможность (возможно, лучший способ) упорядочить по порядку значений в предложении 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
параметры равны. Выполнение этого в программном коде может быть быстрее с использованием этих дополнительных знаний. Конечно, разумнее было бы возложить это бремя на клиента, а не на сервер, если учитывать производительность сервера.