sql >> Databáze >  >> Database Tools >> phpMyAdmin

Proč dostávám hodnoty NULL na levém spojení?

Provádíte group by (3 sloupce) s 5 sloupci neagregovaných sloupců ve výběrovém seznamu. Také, ne že by na tom záleželo, ve výstupu sloupce nejsou žádné agregáty.

MySQL to považuje za distinct (pro 3 sloupce) a vrátí první řádek, na který narazí v mezipaměti MRU, a pokud neexistuje žádná mezipaměť, první, na které narazí v seskupeném indexu nebo fyzickém uspořádání, aby byly uspokojeny 2 sloupce neseskupené podle.

Jinými slovy, je to chyba uživatele. Snafu. Doporučuji vyčistit váš záměr pomocí GROUP BY .

Poněkud související, přečtěte si moji nedávnou odpověď zde související s ONLY_FULL_GROUP_BY . V dolní části tohoto odkazu je Zpracování MySQL GROUP BY což je podle mého názoru zastírání skutečných problémů a nestandardů, které MySQL umožňovalo, což způsobilo neočekávaná a těžko vysvětlitelná data z porušení tohoto standardu.

Co tedy vývojový tým MySQL udělal? Standard implementovali standardně (od verze 5.7), aby zakázal typy dotazů, které jste právě provedli.

Upravit1

Váš dotaz bez GROUP BY ale s order by newGroups.id,people.id , na serveru verze 5.7.14:




  1. phpMyAdmin 502 špatná brána [CentOS7, nginx]

  2. Můžete upravit duplicitní chybovou zprávu mysql_error?

  3. Vytváření tabulek v PhpMyAdmin - chyba 1064

  4. Jak stáhnout a nainstalovat DBeaver