sql >> Database >  >> Database Tools >> phpMyAdmin

MySQL - Query combineer rijen met dezelfde id en bewaar alle invoer voor die id maar als één record

Het probleem is dat MySQL geen goede manier heeft om rijen op te sommen. Het gebruik van de constante is helaas niet gegarandeerd, volgens de MySQL-documentatie. Het werkt vaak wel, maar het kan ook problematisch zijn.

Ik stel voor dat u de namen samenvoegt in één enkel veld. Het resultaat zou er als volgt uitzien:

1     tree,rose
2     tree
3     tree,bush,rose

De SQL gebruiken:

select plantid, group_concat(name separator ',')
from t
group by plantid

Als je de namen echt in aparte kolommen wilt hebben, denk je aan twee opties. Een daarvan is om de resultaten van boven te gebruiken en het resultaat vervolgens in afzonderlijke tekenreeksen te ontleden. Het andere alternatief is om een ​​self-join en aggregatie te gebruiken om een ​​volgnummer te berekenen, zoals dit:

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

En gebruik dit als de subquery.




  1. #1146 - Tabel 'phpmyadmin.pma_recent' bestaat niet

  2. phpmyadmin mysql trigger syntaxisfout

  3. PHP-aanmeldingsproblemen

  4. Waarom geeft phpmyadmin een fout 500 weer bij het openen van Designer?