Dies beantwortet die ursprüngliche Frage.
Sie brauchen weder die tags
noch die users
Tabelle für Ihre Abfrage, sodass diese stark vereinfacht werden kann.
DISTINCT
ist mit JSON_AGG()
nicht erlaubt . Aber Sie können eine Unterabfrage verwenden:
SELECT b.user_id, JSON_ARRAYAGG( b.tag_id) AS tags
FROM (SELECT DISTINCT b.user_id, bt.tag_id
FROM bookmark_tag bt JOIN
bookmark b
ON b.id = bt.bookmark_id
) b
GROUP BY b.user_id;
Hier ist eine db<>Geige.