Трябваше да се справя с подобен проблем, подреждайки неестествено дърво на категории. Ако вмъквате всички редове за един идентификатор наведнъж, можете да направите нещо подобно за всеки subId:
SET @seq = 0;
INSERT INTO test
(id, subId, text) VALUES
(_id, @seq := @seq + 1, 'Some text')
;
Ако трябва да „добавите“ ред към id, можете да зададете @seq с
SELECT IFNULL(MAX(subId), 0) INTO @seq FROM test WHERE id = _id;
Това, разбира се, ще изисква управление на идентификатора от приложението, а не от mySQL.
Можете да направите същото като последния кодов блок, за да получите и следващия наличен идентификатор.