Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Remova duplicatas na consulta MySQL JOIN em JSON_ARRAYAGG com INNER JOIN


Isso responde à pergunta original.

Você não precisa das tags nem os users tabela para sua consulta, para que possa ser muito simplificada.

DISTINCT não é permitido com JSON_AGG() . Mas você pode usar uma subconsulta:
 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;

Aqui é um db<>fiddle.