समस्या यह है कि 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
और इसे सबक्वेरी के रूप में प्रयोग करें।