phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

Por que estou recebendo valores NULL no Left Join?


Você está realizando um group by (3 colunas) com 5 colunas de colunas não agregadas na lista de seleção. Além disso, não que isso importe, não há agregações na saída da coluna.

O MySQL trata isso como um distinct (para as 3 colunas) e traz de volta a primeira linha que encontrar no cache MRU e, se não houver cache, as primeiras encontradas no índice clusterizado ou ordenação física para satisfazer as 2 colunas não agrupadas por.

Em outras palavras, é um erro do usuário. Um maluco. Eu recomendo limpar sua intenção com o GROUP BY .

Um pouco relacionado, leia uma resposta recente minha Aqui relacionado a ONLY_FULL_GROUP_BY . Veja na parte inferior desse link MySQL Handling of Agrupar por que na minha opinião é um encobrimento dos problemas reais e não-padrões que o MySQL permitiu que tornou inesperados e difíceis de explicar dados de violações desse Padrão.

Então, o que a equipe de desenvolvimento do MySQL fez? Eles implementaram o padrão por padrão (começando na versão 5.7) para não permitir os tipos de consultas que você acabou de realizar.

Editar1


Sua consulta, sem GROUP BY mas com um order by newGroups.id,people.id , em um servidor versão 5.7.14: