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

MySQL - Fråga kombinera rader med samma id och behåll alla poster för det id men som en post

Problemet är att MySQL inte har ett bra sätt att räkna upp rader. Användningen av konstanten är inte garanterad att fungera, tyvärr, enligt MySQL-dokumentationen. Det fungerar ofta, men det kan också vara problematiskt.

Jag skulle föreslå att du sammanfogar namnen till ett enda fält. Resultatet skulle se ut så här:

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

Använda SQL:

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

Om du verkligen ville ha namnen i separata kolumner, kommer två alternativ att tänka på. En är att använda resultaten från ovan och sedan analysera resultatet i separata strängar. Det andra alternativet är att använda en självkoppling och aggregering för att beräkna ett sekventiellt tal, så här:

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

Och använd detta som underfrågan.




  1. phpMyAdmin - MySQL-tillägget saknas

  2. PMA Database ... inte OK i phpMyAdmin uppgradering

  3. Varför visar phpmyadmin ett fel 500 när man försöker komma in i Designer?

  4. Hur man tolkar detta SQL Server-felmeddelande