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

¿Por qué obtengo valores NULL en Left Join?

Estás realizando un group by (3 columnas) con 5 columnas de columnas no agregadas en la lista de selección. Además, no es que importe, no hay agregados en la salida de la columna.

MySQL lo trata como un distinct (para las 3 columnas) y recupera la primera fila que encuentra en la caché de MRU y, si no hay caché, las primeras encontradas en el índice agrupado o el orden físico para satisfacer las 2 columnas no agrupadas por.

En otras palabras, es un error del usuario. Un bodrio. Recomiendo limpiar tu intención con GROUP BY .

Algo relacionado, lea una respuesta mía reciente Aquí relacionado con ONLY_FULL_GROUP_BY . Ver en la parte inferior de ese enlace es Manejo de MySQL de AGRUPAR POR lo que, en mi opinión, es una evasión de los problemas reales y los no estándares que permitió MySQL, lo que generó datos inesperados y difíciles de explicar de las violaciones de ese estándar.

Entonces, ¿qué hizo el equipo de desarrollo de MySQL? Implementaron el estándar de forma predeterminada (a partir de la versión 5.7) para no permitir los tipos de consultas que acaba de realizar.

Editar1

Tu consulta, sin GROUP BY pero con un order by newGroups.id,people.id , en un servidor versión 5.7.14: