Дон прав - MySQL не имеет функции ранжирования. Но, к счастью, он позволяет вам инициализировать и ссылаться на переменную, чтобы вы могли кодировать логику для ранжирования.
Это вернет строки для 2-х детей:
SELECT x.aid,
x.bid,
x.parent_id
FROM (SELECT a.id 'aid',
b.id 'bid',
b.parent_id,
CASE WHEN b.parent_id = @parent_id THEN @rownum := @rownum +1 ELSE @rownum := 1 END AS rownum,
@parent_id := b.parent_id
FROM TABLE_A a
JOIN TABLE_B b ON b.parent_id = a.id
JOIN (SELECT @rownum := 0, @parent_id := NULL) r
ORDER BY b.parent_id, b.id) x
WHERE x.rownum = 2
Измените WHERE x.rownum = ?
на детей N-го уровня, которых вы хотите. ORDER BY
в подзапросе важно для правильного определения рейтинга.
Мне не ясно, как вы хотите использовать это для запроса UPDATE
- предоставьте больше деталей, и я обновлю в соответствии с вашими потребностями.