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

MySQL - Forespørgsel kombinere rækker med samme id og behold alle indtastninger for det id, men som én post

Problemet er, at MySQL ikke har en god måde at opregne rækker på. Brugen af ​​konstanten er ikke garanteret at virke, desværre, ifølge MySQL-dokumentationen. Det virker ofte, men det kan også være problematisk.

Jeg vil foreslå, at du sammenkæder navnene i et enkelt felt. Resultatet ville se sådan ud:

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

Brug af SQL:

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

Hvis du virkelig ville have navnene i separate kolonner, kommer der to muligheder i tankerne. Den ene er at bruge resultaterne fra oven og derefter parse resultatet i separate strenge. Det andet alternativ er at bruge en selvsammenføjning og aggregering til at beregne et sekventielt tal, som dette:

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

Og brug dette som underforespørgsel.




  1. #1130 - Host 'localhost' har ikke tilladelse til at oprette forbindelse til denne MySQL-server

  2. phpMyAdmin Ingen database valgt MySQL

  3. Tastaturgenvej til automatisk at ombryde valgt tekst i IsNull([tekst], 0) i SSMS

  4. hvordan man konfigurerer config.inc.php til at have en loginform i phpmyadmin