Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Entfernen Sie Duplikate bei der MySQL JOIN-Abfrage auf JSON_ARRAYAGG mit INNER JOIN

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.