Проблемът е, че MySQL няма добър начин за изброяване на редове. Използването на константата не е гарантирано, че ще работи, уви, според документацията на MySQL. Често работи, но може да бъде и проблематично.
Бих предложил да свържете имената заедно в едно поле. Резултатът ще изглежда така:
1 tree,rose
2 tree
3 tree,bush,rose
Използване на SQL:
select plantid, group_concat(name separator ',')
from t
group by plantid
Ако наистина искате имената в отделни колони, две опции идват на ум. Единият е да използвате резултатите от горе и след това да анализирате резултата в отделни низове. Другата алтернатива е да използвате самостоятелно присъединяване и агрегиране за изчисляване на последователно число, като това:
select p.plantid, p.name, count(*) as seqnum
from t p left outer join
t pprev
on p.plantid = pprev.plantid and
p.name >= pprev.name
group by p.plantid, p.name
И използвайте това като подзаявка.