sql >> Databáze >  >> Database Tools >> phpMyAdmin

MySQL - Dotaz kombinuje řádky se stejným ID a uchová všechny položky pro toto ID, ale jako jeden záznam

Problém je v tom, že MySQL nemá dobrý způsob výčtu řádků. Bohužel podle dokumentace MySQL není zaručeno, že použití konstanty bude fungovat. Často to funguje, ale může to být také problematické.

Navrhoval bych, abyste jména spojili do jednoho pole. Výsledek by vypadal takto:

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

Pomocí SQL:

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

Pokud byste opravdu chtěli jména v samostatných sloupcích, napadají vás dvě možnosti. Jedním z nich je použít výsledky shora a poté výsledek analyzovat do samostatných řetězců. Druhou alternativou je použití vlastního spojení a agregace k výpočtu pořadového čísla, jako je tento:

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

A použijte to jako dílčí dotaz.




  1. apostrof phpmyadmin sql nefunguje

  2. Přesouvání připojení a instancí mezi dvěma počítači

  3. Chyba odstranění řádku sql

  4. #1025 – Chyba při přejmenování './database/#sql-2e0f_1254ba7' na './database/table' (errno:150)