問題は、MySQLに行を列挙する良い方法がないことです。 MySQLのドキュメントによると、残念ながら、定数の使用は機能することが保証されていません。多くの場合は機能しますが、問題が発生することもあります。
名前を1つのフィールドに連結することをお勧めします。結果は次のようになります:
1 tree,rose
2 tree
3 tree,bush,rose
SQLの使用:
select plantid, group_concat(name separator ',')
from t
group by plantid
本当に別々の列に名前を入れたい場合は、2つのオプションが思い浮かびます。 1つは、上記の結果を使用してから、結果を個別の文字列に解析することです。もう1つの方法は、自己結合と集計を使用して、次のように連番を計算することです。
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
そして、これをサブクエリとして使用します。