Masalahnya adalah MySQL tidak memiliki cara yang baik untuk menghitung baris. Penggunaan konstanta tidak dijamin berfungsi, sayangnya, menurut dokumentasi MySQL. Ini sering berhasil, tetapi juga bisa menjadi masalah.
Saya menyarankan agar Anda menggabungkan nama-nama itu menjadi satu bidang. Hasilnya akan terlihat seperti:
1 tree,rose
2 tree
3 tree,bush,rose
Menggunakan SQL:
select plantid, group_concat(name separator ',')
from t
group by plantid
Jika Anda benar-benar menginginkan nama di kolom terpisah, ada dua opsi yang muncul di benak Anda. Salah satunya adalah dengan menggunakan hasil dari atas dan kemudian mengurai hasilnya menjadi string yang terpisah. Alternatif lainnya adalah dengan menggunakan self-join and aggregation untuk menghitung nomor urut, seperti ini:
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
Dan gunakan ini sebagai subquery.