new group_concat español ejemplos mysql group-by group-concat

español - mysql group_concat order



MySQL obtiene el primer valor no nulo después del grupo por (1)

Intenta usar MAX , así:

SELECT email, MAX(`name`) FROM ( SELECT email, `name` FROM multiple_tables_and_unions ) AS emails GROUP BY email

Tengo una tabla grande con datos que no son únicos, pero deben serlo. Esta tabla es el resultado de múltiples selecciones de unión, por lo que no es una tabla real. No puedo hacer una tabla real por otras razones.

Todas las tablas de UNION tienen una columna de correo electrónico que eventualmente será única. Los registros resultantes se ven así:

1 [email protected] Ozzy 2 [email protected] Tony 3 [email protected] Steve 4 [email protected] 13 [email protected] Tony 14 [email protected] Ozzy 15 [email protected] Dave 16 [email protected] Tim

Como puede ver, algunos correos electrónicos aparecen más de una vez con nombres diferentes o nombres no existentes. Cuando agrego una cláusula de GROUP BY email al final, los resultados se ven así:

1 [email protected] Ozzy 2 [email protected] Tony 3 [email protected] Steve 4 [email protected] 13 [email protected] Tony

Como puede ver, el correo electrónico 4 no tiene nombre porque eligió la primera entrada con NULL para un nombre. Luego intenté usar GROUP_CONCAT que hizo que los resultados se vieran así:

1 [email protected] Ozzy 14 [email protected] Ozzy,Tony 15 [email protected] Dave,Steve 16 [email protected] Tim 13 [email protected] Tony

Como puede ver, ahora todos tienen un nombre, pero algunas filas tienen más de un nombre concatinado. Lo que quiero hacer es GROUP BY email y elegir la primera entrada NOT NULL de cada columna para que cada fila parezca teóricamente:

1 [email protected] Ozzy 2 [email protected] Tony 3 [email protected] Steve 4 [email protected] Tim 13 [email protected] Tony

He intentado usar COALESCE pero no funciona como estaba previsto. Mi consulta actual se ve así:

SELECT id, email, `name` FROM ( SELECT email, `name` FROM multiple_tables_and_unions ) AS emails GROUP BY email

He eliminado el código de la tabla temporal ya que contiene muchas tablas, pero todas seleccionan la columna de name y email . Esencialmente necesito una función como GROUP_COALESCE pero desafortunadamente no existe. ¿Cuáles son mis opciones?

Gracias