Điều này trả lời câu hỏi ban đầu.
Bạn không cần thẻ tags
cũng không phải người dùng tags
bảng cho truy vấn của bạn, vì vậy nó có thể được đơn giản hóa nhiều.
DISTINCT
không được phép với JSON_AGG()
. Nhưng bạn có thể sử dụng một truy vấn con:
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;
Tại đây là một db <> fiddle.