Mi chiedo se ci sia un altro modo (forse un modo migliore) per ordinare in base all'ordine dei valori in una clausola IN ().
Il problema è che ho 2 query, una che ottiene tutti gli ID e la seconda che recupera tutte le informazioni. Il primo crea l'ordine degli ID per i quali voglio che il secondo ordini. Gli ID vengono inseriti in una clausola IN () nell'ordine corretto.
Quindi sarebbe qualcosa di simile (estremamente semplificato):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
Il problema è che la seconda query non restituisce i risultati nello stesso ordine in cui gli ID vengono inseriti nella clausola IN ().
Una soluzione che ho trovato è quella di inserire tutti gli ID in una tabella temporanea con un campo a incremento automatico che viene quindi unito alla seconda query.
C'è un'opzione migliore?
Nota: poiché la prima query viene eseguita "dall'utente" e la seconda viene eseguita in un processo in background, non è possibile combinare la query 2 in 1 utilizzando le query secondarie.
Sto usando MySQL, ma sto pensando che potrebbe essere utile che abbia notato quali opzioni ci sono anche per altri DB.
IN
eFIELD
parametri sono uguali. In questo modo in un codice di programma può essere più veloce utilizzando tale conoscenza aggiuntiva. Naturalmente, potrebbe essere più saggio imporre questo onere sul client anziché sul server se si hanno in mente le prestazioni del server.