Verkar som din metod kan vara det enda sättet att göra detta.
Anledningen är att NULL är ett giltigt värde att inkludera i JSON-objekt. Medan de flesta aggregeringsfunktioner ignorerar nollvärden, så ignorerar de korrekt icke-matchande rader som kommer från LEFT JOIN , skulle det vara ett problem för JSON_ARRAYAGG() . Det skulle hindra dig från att inkludera nollvärden i andra situationer. Det finns inget sätt att skilja explicita nollor från LEFT JOIN noll.