phpMyAdmin
 sql >> Database >  >> Database Tools >> phpMyAdmin

Perché ricevo valori NULL su Left Join?

Stai eseguendo un group by (3 colonne) con 5 colonne di colonne non aggregate nell'elenco di selezione. Inoltre, non è importante, non ci sono aggregati nell'output della colonna.

MySQL lo tratta come un distinct (per le 3 colonne) e riporta la prima riga che incontra nella cache MRU e, se non c'è cache, le prime incontrate nell'indice cluster o nell'ordinamento fisico per soddisfare le 2 colonne non raggruppate.

In altre parole, è un errore dell'utente. Uno spuntino. Ti consiglio di ripulire la tua intenzione con il GROUP BY .

In qualche modo correlato, leggi una mia risposta recente Qui relativo a ONLY_FULL_GROUP_BY . Vedi in fondo a quel link c'è Gestione MySQL di GRUPPO PER che a mio avviso è una sorvolata sui problemi reali e sui non standard consentiti da MySQL, il che ha reso i dati inaspettati e difficili da spiegare dalle violazioni di quello standard.

Allora, cosa ha fatto il team di sviluppo di MySQL? Hanno implementato lo standard per impostazione predefinita (a partire dalla versione 5.7) per non consentire i tipi di query che hai appena eseguito.

Modifica1

La tua richiesta, senza GROUP BY ma con un order by newGroups.id,people.id , su un server versione 5.7.14: