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

Waarom krijg ik NULL-waarden bij Left Join?

Je voert een group by (3 kolommen) met 5 kolommen met niet-geaggregeerde kolommen in de selectielijst. Ook, niet dat het ertoe doet, er zijn geen aggregaten in de kolomuitvoer.

MySQL behandelt dat als een distinct (voor de 3 kolommen) en brengt de eerste rij terug die het tegenkomt in de MRU-cache, en als er geen cache is, de eerste die wordt aangetroffen in de geclusterde index of fysieke volgorde om te voldoen aan de 2 niet-gegroepeerde kolommen.

Met andere woorden, het is een gebruikersfout. Een snuf. Ik raad aan om je intentie op te schonen met de GROUP BY .

Enigszins gerelateerd, lees een recent antwoord van mij Hier gerelateerd aan ONLY_FULL_GROUP_BY . Zie onderaan die link MySQL-afhandeling van GROEP OP wat naar mijn mening een verdoezeling is van de echte problemen en niet-standaarden die MySQL toestond, waardoor onverwachte en moeilijk te verklaren gegevens van schendingen van die standaard werden gemaakt.

Dus wat deed het MySQL-ontwikkelteam? Ze hebben de standaard standaard geïmplementeerd (vanaf versie 5.7) om de typen zoekopdrachten die u zojuist hebt uitgevoerd, niet toe te staan.

Bewerken1

Uw vraag, zonder GROUP BY maar met een order by newGroups.id,people.id , op een server met versie 5.7.14:




  1. Hoe te exporteren in phpmyadmin zonder id-kolom (de AUTO_INCREMENT-kolom)

  2. MySQL ALL-instructie werkt niet in phpmyadmin

  3. Waarom zou phpmyadmin aanzienlijk sneller zijn dan de mysql-opdrachtregel?

  4. Waar kan ik het door de gebruiker gedefinieerde tabeltype in SQL Server 2008 in SSMS controleren? en hoe kan ik er een nieuwe kolom in invoegen?