У меня есть таблица базы данных MySQL с этой структурой:Fetching связанного список в базе данных MySQL
table
id INT NOT NULL PRIMARY KEY
data ..
next_id INT NULL
Мне нужно получить данные в порядке связного списка. Например, если эти данные:
id | next_id
----+---------
1 | 2
2 | 4
3 | 9
4 | 3
9 | NULL
мне нужно извлечь строки для ID = 1, 2, 4, 3, 9, в этом порядке. Как это сделать с запросом базы данных? (Я могу сделать это на стороне клиента. Мне любопытно, может ли это быть сделано на стороне базы данных. Таким образом, заявив, что это невозможно, все в порядке (при наличии достаточных доказательств)).
Было бы неплохо иметь точку окончания (например, остановить после 10 выборок или когда какое-то условие в строке станет истинным), но это не является обязательным требованием (может быть сделано на стороне клиента). Мне (надеюсь, я) не нужно проверять круглые ссылки.
Можете ли вы создать дополнительные индексные таблицы? Мне действительно интересно узнать план объяснения запроса, который предлагает Билл. Возможно, это не так уж плохо, поскольку он всегда ищет первичный ключ. Я предполагаю, что вы предоставите идентификатор первого узла в своем запросе. (иначе это будет жестоко). 10 круговых поездок сделают это (я знаю, а не то, что вы просили). Временные таблицы, созданные в запросе, могут это сделать, особенно если ваш результат мало. – TheJacobTaylor