Det ser ud til, at din metode er den eneste måde at gøre dette på.
Årsagen er, at NULL er en gyldig værdi, der skal inkluderes i JSON-objekter. Mens de fleste aggregeringsfunktioner ignorerer nuller, så ignorerer de korrekt ikke-matchende rækker, der kommer fra LEFT JOIN , ville det være et problem for JSON_ARRAYAGG() . Det ville forhindre dig i at inkludere nulværdier i andre situationer. Der er ingen måde at skelne eksplicitte nuller fra LEFT JOIN nuller.