sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

MySQL:consulta las filas combinadas con la misma identificación y conserva todas las entradas para esa identificación, pero como un registro

El problema es que MySQL no tiene una buena forma de enumerar filas. No se garantiza que el uso de la constante funcione, por desgracia, de acuerdo con la documentación de MySQL. A menudo funciona, pero también puede ser problemático.

Le sugiero que concatene los nombres en un solo campo. El resultado se vería así:

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

Usando el SQL:

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

Si realmente quería los nombres en columnas separadas, se le ocurren dos opciones. Una es usar los resultados de arriba y luego analizar el resultado en cadenas separadas. La otra alternativa es usar una autounión y una agregación para calcular un número secuencial, como este:

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

Y use esto como la subconsulta.