Ho una tabella del database MySQL con questa struttura:Recupero lista collegata nel database MySQL
table
id INT NOT NULL PRIMARY KEY
data ..
next_id INT NULL
ho bisogno di recuperare i dati in ordine di lista collegata. Ad esempio, in questi dati:
id | next_id
----+---------
1 | 2
2 | 4
3 | 9
4 | 3
9 | NULL
ho bisogno di recuperare le righe per id = 1, 2, 4, 3, 9, in questo ordine. Come posso fare questo con una query del database? (Posso farlo sul lato client.Sono curioso se questo può essere fatto dal lato del database.Così, dicendo che è impossibile va bene (dato prova sufficiente)).
Sarebbe bello avere anche un punto di terminazione (ad es. Fermarsi dopo 10 recuperi o quando alcune condizioni della fila diventano vere) ma questo non è un requisito (può essere fatto dal lato client). Io (spero di farlo) non è necessario verificare i riferimenti circolari.
Sei in grado di creare tabelle indice aggiuntive? Sono davvero curioso di spiegare il piano per la query suggerita da Bill. Potrebbe non essere così male visto che è sempre in cerca sulla chiave primaria. Suppongo che fornirai l'ID del primo nodo nella tua query. (altrimenti, sarà brutale). 10 viaggi di andata lo farebbero (lo so, non quello che hai chiesto). Le tabelle temporanee create nella query potrebbero farlo, in particolare se il risultato lo ha impostato in modo ridotto. – TheJacobTaylor