Parece que seu método pode ser a única maneira de fazer isso.
A razão é que
NULL
é um valor válido para incluir em objetos JSON. Embora a maioria das funções de agregação ignorem nulos, elas ignoram corretamente as linhas não correspondentes que vêm de LEFT JOIN
, seria um problema para JSON_ARRAYAGG()
. Isso impediria que você incluísse valores nulos em outras situações. Não há como distinguir nulos explícitos de LEFT JOIN
nulos.