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

Hvorfor får jeg NULL-værdier på Left Join?

Du udfører en group by (3 kolonner) med 5 kolonner af ikke-aggregerede kolonner i udvalgslisten. Det betyder heller ikke noget, der er ingen aggregater i kolonneoutputtet.

MySQL behandler det som en distinct (for de 3 kolonner) og bringer den første række tilbage, den støder på i MRU-cachen, og hvis der ikke er nogen cache, de første, der stødes på i det klyngede indeks eller den fysiske rækkefølge for at tilfredsstille de 2 ikke-grupperede kolonner.

Det er med andre ord en brugerfejl. En lureri. Jeg anbefaler at rydde op i din hensigt med GROUP BY .

Lidt relateret, læs mit nylige svar Her relateret til ONLY_FULL_GROUP_BY . Se i bunden af ​​det link er MySQL-håndtering af GRUPPER EFTER som efter min mening er en udviskning af de reelle problemer og ikke-standarder, som MySQL tillod, hvilket gjorde uventede og svære at forklare data fra overtrædelser af denne standard.

Så hvad gjorde MySQL-udviklerteamet? De implementerede standarden som standard (startende i version 5.7) for at forhindre de typer forespørgsler, du lige har udført.

Rediger1

Din forespørgsel uden GROUP BY men med en order by newGroups.id,people.id , på en version 5.7.14-server:




  1. Hvor skriver jeg MySQL trigger

  2. Automatisk opdatering af lager i Database Mysql

  3. Tilpas standard 'New Stored Procedure' SSMS 2008 skabelon

  4. SQL Server 2008 management studio drop tabeller advarsel?