Dette besvarer det oprindelige spørgsmål.
Du behøver hverken tags heller ikke users tabel til din forespørgsel, så den kan være meget forenklet.
DISTINCT er ikke tilladt med JSON_AGG() . Men du kan bruge en underforespørgsel:
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;
Her er en db<>violin.