Tuve que lidiar con un problema similar al ordenar un árbol de categorías de forma poco natural. Si está insertando todas las filas para una identificación a la vez, podría hacer algo como esto para cada subId:
SET @seq = 0;
INSERT INTO test
(id, subId, text) VALUES
(_id, @seq := @seq + 1, 'Some text')
;
Si necesita "agregar" una fila a una identificación, puede configurar @seq con
SELECT IFNULL(MAX(subId), 0) INTO @seq FROM test WHERE id = _id;
Por supuesto, esto requeriría la gestión de la identificación por parte de la aplicación y no de mySQL.
Podría hacer lo mismo que el último bloque de código para obtener también la siguiente identificación disponible.