Me pregunto si hay una posibilidad (posiblemente una mejor manera) de ordenar por el orden de los valores en una cláusula IN ().
El problema es que tengo 2 consultas, una que obtiene todas las ID y la segunda que recupera toda la información. El primero crea el orden de los ID por los que quiero que el segundo ordene. Los ID se colocan en una cláusula IN () en el orden correcto.
Entonces sería algo como (extremadamente simplificado):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
El problema es que la segunda consulta no devuelve los resultados en el mismo orden en que los ID se colocan en la cláusula IN ().
Una solución que he encontrado es poner todos los ID en una tabla temporal con un campo de incremento automático que luego se une a la segunda consulta.
¿Hay alguna opción mejor?
Nota: Como la primera consulta se ejecuta "por el usuario" y la segunda se ejecuta en un proceso en segundo plano, no hay forma de combinar la consulta 2 en 1 usando subconsultas.
Estoy usando MySQL, pero creo que podría ser útil que tenga en cuenta qué opciones hay para otros DB también.
IN
yFIELD
parámetros son iguales. Hacer esto en un código de programa puede ser más rápido al usar ese conocimiento adicional. Por supuesto, podría ser más sabio poner esta carga sobre el cliente en lugar del servidor si tiene en cuenta el rendimiento del servidor.