sql >> Base de Datos >  >> RDS >> Mysql

Eliminar duplicados en MySQL JOIN consulta en JSON_ARRAYAGG con INNER JOIN

Esto responde a la pregunta original.

No necesitas ni las tags ni los users tabla para su consulta, por lo que se puede simplificar mucho.

DISTINCT no está permitido con JSON_AGG() . Pero puedes usar una 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;

Aquí es un db<>violín.